首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用自定义函数对asp:GridView进行排序

使用自定义函数对asp:GridView进行排序
EN

Stack Overflow用户
提问于 2013-01-25 00:26:23
回答 2查看 1.6K关注 0票数 0

这里是GridView:

代码语言:javascript
运行
复制
<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,.

所以我认为可能的是:

代码语言:javascript
运行
复制
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

那么,对于“特殊”排序代码,我该做什么呢?

更新:为了明确起见,我可以根据需要滚动我自己的函数来比较两个字符串。但是,我不知道如何将该函数应用于数据网格/数据源。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-30 20:13:52

GridView允许DataKeyNames,这就是这里的解决方案。在设置数据源时(在我的例子中,一个SQL查询)包括"FullId“和"PlainId”,这两个词去掉了主导字符,并将其余部分解析为int。使用"FullId“作为列的文本值,但将"PlainId”作为DataKeyNames之一,并将其用作列的SortExpression

票数 0
EN

Stack Overflow用户

发布于 2013-01-25 01:43:38

您可以为IComparer实现DataGridView.Sort类:

http://msdn.microsoft.com/en-us/library/wstxtkxs%28v=vs.85%29.aspx

您可以在比较方法中将"T“和下面的数字分开。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14513340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档