如何按显示的值而不是数据字段值对gridview列进行排序/过滤

时间:2013-09-01 21:56:31

标签: asp.net gridview telerik radgrid

到目前为止,我的搜索结果并没有带来任何成果 - 我怀疑我的术语并不流利。如何根据网格视图中显示的内容进行排序,而不是根据其后面的数据进行排序?

例如,我的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>

欢迎提出建议和链接!

1 个答案:

答案 0 :(得分:1)

对于遇到这个寻找相同答案的人来说,我从来没有遇到过如何更改排序/过滤逻辑。

我最终做的是修改我的存储过程以返回数据。我没有从一张桌子上拉出来,而是加入了4张桌子并返回了我需要的所有栏目。

因此,我现在只需使用BoundField / GridBoundColumn并直接显示每个表,而不是调用函数来显示ItemTemplate / GridTemplateColumn中的数据。
这允许排序&amp;过滤器无需修改即可工作。