2009-04-28 92 views
2

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

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

回答

4

好了,我得到了想要的效果,我关掉了由GridTemplateColumn的SortingExpression属性设置为空白排序。

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

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

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

谢谢。

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执行任何操作,因为默认情况下它将被禁用。

+0

是的,有一个AllowSorting属性GridBoundColumn,但在这种情况下,我使用GridTemplateColumn。有没有办法关闭GridTemplateColumn上的排序? – 2009-04-28 15:27:00

+0

是的,这将工作,但GridTemplateColumn没有启用/禁用排序属性。 – 2009-04-28 15:37:17

6

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> 
+0

是的,GridBoundColumn上有一个AllowSorting属性,但在这种情况下我使用GridTemplateColumn。有没有办法关闭GridTemplateColumn上的排序? – 2009-04-28 15:27:09

0

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

3

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

0

正如Telerik Docs说:

如果要禁用分拣只有特定列,你可以列的IsSortable属性配置为假:

<telerik:GridViewColumn IsSortable="False" />