【发布时间】:2013-01-25 00:26:23
【问题描述】:
这是 GridView:
<asp:GridView ID="MyGridView" runat="server" AllowPaging="true" AllowSorting="true"
OnPageIndexChanging="MyGridView_PageIndexChanging"
OnSorting="MyGridView_Sorting">
<Columns>
<asp:TemplateField HeaderText="ID" SortExpression="Id">
<ItemTemplate>
<asp:Label ID="idLabel" runat="server" Text='<%# Bind("Id") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这里,Id 列是一个字符串,总是由字母“T”后跟一个数字组成,即“T1”或“T597”,其他列是相当普通的名称和描述字符串字段。
我需要这个 Id 列来排序,就好像 Id 是数字一样,忽略前面的字母。但是因为它在那里,所以它被视为一个字符串并按如下方式排序:T1、T10、T100、T2、T231、T34、...
所以我认为可能的是:
protected void MyGridView_Sorting(object sender, GridViewSortEventArgs e)
{
if (e.SortExpression.Equals("Id")
{
// Special sorting code
}
else
{
// Normal sorting code
}
}
“正常”排序代码遵循将DataSource 转换为DataView 并设置DataView.Sort = e.SortExpression 等的常见模式,例如:allow sorting by column gridview
那么“特殊”的排序代码该怎么办呢?
更新:为了清楚起见,我可以根据需要滚动自己的函数来比较两个字符串。但是,我不知道如何将该函数应用到我的数据网格/数据源。
【问题讨论】:
标签: c# asp.net sorting gridview