0

到目前为止,我的搜索还没有发现任何成果——我怀疑是我不熟悉术语。如何按网格视图中显示的内容而不是其背后的数据进行排序?

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

1 回答 1

1

对于遇到此问题并寻找相同答案的任何人,我从未遇到过如何更改排序/过滤逻辑。

我最终做的是修改返回数据的存储过程。
我没有从一张表中提取,而是加入了 4 个表并返回了我需要的所有列。

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

于 2013-09-06T15:41:56.783 回答