Telerik RadGrid - 如何禁用列的排序?

时间:2009-04-28 15:08:28

标签: telerik radgrid

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

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

6 个答案:

答案 0 :(得分:6)

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

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

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


修改

从最初的问题不清楚,您使用的是GridTemplate列。正如您现在使用的是SortExpression属性,在标记工作中不使用相同的属性吗?所以:

    <tr:RadGrid>
    <MasterTableView>
        <Columns>
            <tr:GridTemplateColumn HeaderText="Description" DataField="field" 
                SortExpression="">
                <!-- template here etc. -->
            </tr:GridTemplateColumn>
        </Columns>
    </MasterTableView>
    </tr:RadGrid>

答案 1 :(得分:4)

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

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

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

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

感谢。

答案 2 :(得分:3)

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

答案 3 :(得分:0)

以下是一个示例,说明如何禁用特定列的排序。

请注意网格级别的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做任何事情,因为默认情况下它将被禁用。

答案 4 :(得分:0)

如果您使用GridTemplateColumn,您可以随时提供自己的标题作为标题而不是链接按钮的headertemplate。我们有点额外的工作,但这很好。如果你要禁用所有GridTemplateColumns的排序,那么你的“hack”将是最好的。

答案 5 :(得分:0)

Telerik Docs中所述:

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

<telerik:GridViewColumn IsSortable="False" />