Telerik RadGrid-如何禁用列排序?

Telerik RadGrid-如何禁用列排序?,telerik,radgrid,Telerik,Radgrid,在Telerik中,有一种方法可以通过使用AllowSorting属性来禁用特定列的排序。我正在看,没有允许的运动属性。存在可排序属性,但其受保护且必须重写。那么,我用什么来关闭特定列的排序呢 GridBoundColumn上有一个AllowSorting属性,但在本例中,我使用的是GridTemplateColumn。有没有办法关闭GridTemplateColumn上的排序?下面的示例演示如何禁用特定列的排序 <telerik:RadGrid ID="RadGrid1" runat="

在Telerik中,有一种方法可以通过使用AllowSorting属性来禁用特定列的排序。我正在看,没有允许的运动属性。存在可排序属性,但其受保护且必须重写。那么,我用什么来关闭特定列的排序呢


GridBoundColumn上有一个AllowSorting属性,但在本例中,我使用的是GridTemplateColumn。有没有办法关闭GridTemplateColumn上的排序?

下面的示例演示如何禁用特定列的排序

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

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


我不知道这对你有用吗?我还没有从代码隐藏文件中实例化我的网格,所以如果这是您正在做的,我无法轻松帮助您。但以上这些对我来说很有用


编辑:

啊,从最初的问题来看,不清楚您使用的是GridTemplate列。由于您现在使用的是SortExpression属性,在标记中使用相同的属性不适合您吗?因此:

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

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

Grid.Columns.FindByUniqueName("Type").SortExpression = string.Empty;
这看起来像一个黑客。为什么没有显式属性来关闭排序?哦,好吧。这很有效

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


谢谢。

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

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

如中所述:

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

<telerik:GridViewColumn IsSortable="False" />


是的,GridBoundColumn上有一个AllowSorting属性,但在本例中,我使用的是GridTemplateColumn。有没有办法关闭GridTemplateColumn上的排序?是的,可以,但GridTemplateColumn没有启用/禁用排序属性。是的,GridBoundColumn上有AllowSorting属性,但在这种情况下,我使用的是GridTemplateColumn。有没有办法关闭GridTemplateColumn上的排序?我在原来的帖子中编辑了一个额外的示例。这是基于你在这里所做的。这对你有用吗?是的。基本上我们在做同样的事情。我只是在代码隐藏中做,而你是在反极性地做。不知道他们为什么不提供AllowSorting,但不要认为这是一个黑客行为,至少对于客户端绑定来说,这完全禁用了排序行为。