如何按显示的值而不是数据字段值对gridview列进行排序/过滤
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何按显示的值而不是数据字段值对gridview列进行排序/过滤相关的知识,希望对你有一定的参考价值。
到目前为止,我的搜索没有发现任何富有成效的东西 - 我怀疑是因为我只是不熟悉术语。如何根据网格视图中显示的内容进行排序,而不是根据后面的数据进行排序?
例如,我的SQL数据源有一个部门列表(存储为数字)。当我在gridview上显示部门时,我调用一个执行查找的函数并返回部门名称:
<asp:TemplateField HeaderText="Department" Visible="True" DataField="CurrentDepartment" SortExpression="CurrentDepartment">
<ItemTemplate>
<asp:Label ID="LabelDepartment" runat="server" Text='<%# gclass.GetDepartmentNameByDeptNumber(Eval("CurrentDepartment"))%>'
</ItemTemplate>
</asp:TemplateField>
对此列进行排序按部门的数字表示顺序对结果进行排序。
当我使用带有过滤器的Telerik的RadGrid时,我遇到了类似的问题。我可以按数值搜索,但不能搜索显示的值:
<telerik:GridTemplateColumn HeaderText="Department" ItemStyle-Width="175px" FilterControlWidth="165px" Visible="True" DataField="CurrentDepartment" SortExpression="CurrentDepartment" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains">
<ItemTemplate>
<asp:Label ID="LabelDepartment" runat="server" Text='<%# gclass.GetDepartmentNameByDeptNumber(Eval("CurrentDepartment"))%>' Visible="true"></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
欢迎提出建议和链接!
答案
对于遇到这个寻找相同答案的人来说,我从来没有遇到过如何更改排序/过滤逻辑。
我最终做的是修改我的存储过程,返回数据。 我没有从一个表中拉出来,而是加入了4个表并返回了我需要的所有列。
因此,我现在只需使用BoundField / GridBoundColumn并直接显示每个表,而不是调用函数来显示ItemTemplate / GridTemplateColumn中的数据。 这允许排序和过滤器无需修改即可工作。
以上是关于如何按显示的值而不是数据字段值对gridview列进行排序/过滤的主要内容,如果未能解决你的问题,请参考以下文章
sqlite 的比较等运算是根据不同的值而不同的,并不是根据的字段类型,因为 sqlite 是弱类型字段