2

Telerik在他们的文档 中说,有一种方法可以通过使用 AllowSorting 属性来禁用特定列的排序。我正在查看Telerik.Web.UI.GridColumn 成员并且没有 AllowSorting 属性。有一个 Sortable 属性,但它受保护并且必须被覆盖。那么我用什么来关闭特定列的排序呢?

GridBoundColumn 上有一个 AllowSorting 属性,但在这种情况下,我使用的是 GridTemplateColumn。有没有办法关闭 GridTemplateColumn 上的排序?

4

6 回答 6

6

AllowSorting 属性可从 Visual Studio 的源/标记视图中获得。例如(简化):

    <tr:RadGrid>
    <MasterTableView>
        <Columns>
            <tr:GridBoundColumn DataField="field" HeaderText="Description" 
                 AllowSorting="false" />
        </Columns>
    </MasterTableView>
    </tr:RadGrid>

不知道这对你有用吗?我还没有从代码隐藏文件中实例化我的网格,所以如果这就是你正在做的事情,我不能轻易地帮助你。但以上对我有用。


编辑:

啊,从最初的问题中不清楚,您使用的是 GridTemplate 列。由于您现在使用的是 SortExpression-property,在标记中使用相同的属性对您有用吗?所以:

    <tr:RadGrid>
    <MasterTableView>
        <Columns>
            <tr:GridTemplateColumn HeaderText="Description" DataField="field" 
                SortExpression="">
                <!-- template here etc. -->
            </tr:GridTemplateColumn>
        </Columns>
    </MasterTableView>
    </tr:RadGrid>
于 2009-04-28T15:18:18.527 回答
4

好的,我得到了想要的效果,我通过将 GridTemplateColumn 的 SortingExpression 属性设置为空白来关闭排序。

Grid.Columns.FindByUniqueName("Type").SortExpression = string.Empty;

这看起来像一个黑客。为什么没有明确的属性来关闭排序?那好吧。这行得通。

如果你知道更好的方法,请告诉我。

谢谢。

于 2009-04-28T15:31:43.113 回答
3

Telerik 现在有一个名为 HeaderButtonType 的新属性(也存在于模板列上!),可以将其设置为“无”以呈现标签而不是列标题文本的链接按钮。

于 2012-03-08T11:01:23.797 回答
0

这是一个示例,显示如何禁用特定列的排序。

请注意 Grid 级别的 AllowSorting 属性(适用于所有列)。

然后,在 Columns 集合中,注意它是如何针对该特定列关闭的。

<telerik:RadGrid ID="RadGrid1" runat="server" AllowSorting="True">
    <HeaderContextMenu>
        <CollapseAnimation Duration="200" Type="OutQuint" />
    </HeaderContextMenu>
    <MasterTableView>
        <RowIndicatorColumn>
            <HeaderStyle Width="20px" />
        </RowIndicatorColumn>
        <ExpandCollapseColumn>
            <HeaderStyle Width="20px" />
        </ExpandCollapseColumn>
        <Columns>
            <telerik:GridBoundColumn AllowSorting="False" UniqueName="column">
            </telerik:GridBoundColumn>
        </Columns>
    </MasterTableView>
    <FilterMenu>
        <CollapseAnimation Duration="200" Type="OutQuint" />
    </FilterMenu>
</telerik:RadGrid>

对于 TemplateColumns,我会尝试在网格级别关闭排序并简单地在所需的列上启用它。这样,您就不必为 TemplateColumn 做任何事情,因为它会默认被禁用。

于 2009-04-28T15:17:33.473 回答
0

如果您使用的是 GridTemplateColumn,您始终可以提供您自己的带有标签的标题模板而不是链接按钮作为标题。我们做了一些额外的工作,但这很好用。如果您要禁用所有 GridTemplateColumns 的排序,那么您的“hack”将是最好的。

于 2009-06-26T20:45:01.450 回答
0

Telerik Docs所述:

如果您只想禁用特定列的排序,可以将列的 IsSortable 属性配置为 False:

<telerik:GridViewColumn IsSortable="False" />
于 2015-03-23T12:30:24.367 回答