代码之家  ›  专栏  ›  技术社区  ›  dev.e.loper

telerik radgrid-如何禁用列排序?

  •  2
  • dev.e.loper  · 技术社区  · 16 年前

    their documentation Telerik说,有一种方法可以通过使用allowsorting属性来禁用特定列的排序。我在看 Telerik.Web.UI.GridColumn members 并且没有allowsorting属性。有一个可排序属性,但它受到保护,必须被重写。那么,如何关闭特定列的排序呢?

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

    6 回复  |  直到 10 年前
        1
  •  6
  •   pyrocumulus    16 年前

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

        <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>
    
        2
  •  4
  •   dev.e.loper    16 年前

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

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

    这看起来像个黑客。为什么没有显式属性来关闭排序?哦,好吧。这是可行的。

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

    谢谢。

        3
  •  3
  •   Matt Fenwick sagarcool89    13 年前

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

        4
  •  0
  •   Mark Sherretta    16 年前

    下面是一个示例,演示如何禁用特定列的排序。

    注意网格级别的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>
    

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

        5
  •  0
  •   infocyde    15 年前

    如果使用的是GridTemplateColumn,则可以始终为自己的HeaderTemplate提供一个标签作为标题,而不是链接按钮。A我们有点额外的工作,但这个工作很好。如果您要禁用所有GridTemplateColumn的排序,那么您的“黑客”最好。

        6
  •  0
  •   anhoppe    10 年前

    如中所述 Telerik Docs :

    如果要仅对特定列禁用排序,可以将列的IsSortable属性配置为false:

    <telerik:GridViewColumn IsSortable="False" />