2012-01-04 30 views
0

我有一个显示多列的MVC telerik网格。我想要做的是给用户选择混合和匹配他们看到的列,例如,如果网格可以显示10列,界面可以给用户3列以查看数据,并且他们将不得不选择3个网格中的每一个将显示什么。选择要在电网中显示的列?

我在想它和.Columns命令有关,所以用户可以通过GUI修改它吗?

回答

3

当允许用户查看网格应该代表的数据的特定视图时,您有几个选项。虽然为每个用​​户使用不同的网格声明是一种方法,但最简单的方法可能是显示或隐藏同一网格的列。

这可以通过利用Grid组件附带的内置列选择器来实现,可以在this demo中看到。右键单击任何标题可为用户提供一个简单的界面来选择要显示的列。

或者,您可以使用hideColumn/showColumn客户端API调用,它可以采用列绑定的字段名称或索引作为参数。一个简单的例子(虽然它只隐藏你定义的列):

<input type="text" id="columnHider"/> 
<br /> 
<button type="button" id="columnButton">Click</button> 

@model IEnumerable<Customer> 

@(Html.Telerik().Grid(Model) 
     .Name("TelerikGrid") 
     .Columns(columns => 
     { 
      columns.Bound(c => c.CustomerID); 
      columns.Bound(c => c.CompanyName); 
      columns.Bound(c => c.ContactName); 
      columns.Bound(c => c.Address); 
      columns.Bound(c => c.City); 
     }) 
     .Pageable(pageSettings => pageSettings.Enabled(true).PageSize(10)) 
     .ColumnContextMenu() 
) 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#columnButton").click(function() { 
      var grid = $("#TelerikGrid").data("tGrid"); 
      var columnString = $("#columnHider").val(); 
      grid.hideColumn(columnString); 
     }); 
    }); 
</script> 

这允许你定义你自己的接口来隐藏/显示列。

+0

当单击一个单独的按钮或点击某个按钮时,是否可以使列上下文菜单显示?我问,因为我想让它在触摸设备上工作.. – tweetypi 2012-01-06 11:38:16

+0

没有真正的方法来显示相同​​的标题上下文菜单,但你可以肯定地创建自己的自定义用户界面。您所要做的就是定义何时使用hideColumn()或showColumn()的逻辑。 – carlbergenhem 2012-01-09 16:00:15

相关问题