【问题标题】:How to switch off filtering for a certain column in Kendo grid after it's loaded?加载后如何关闭剑道网格中某个列的过滤?
【发布时间】:2015-03-11 00:11:42
【问题描述】:

我有一个使用通常的 MVC Razor 语法创建的剑道网​​格。

例如,

    @(Html.Kendo().Grid<exampleViewModel>()
    .Name("ExampleGridName")
    .DataSource(ds => ds
        .Ajax()
        .Read(read => read.Action("ExampleMethod", "ExampleClass"))
    .Columns(c =>
    {
        c.Bound(m => m.Id);
        c.Bound(m => m.FirstName);
        c.Bound(m => m.LastName);
    });
    .Filterable())

我的问题:有没有办法在使用 jquery 加载网格后关闭对“姓氏”等列的过滤?

我成功地遍历了列并确定了我需要关闭过滤的列。我尝试将 filterable 属性设置为 false,但它不起作用。也许是因为它看起来像一个对象类型。

我在尝试重用网格时遇到了这个问题,但在加载页面期间必须应用不同的过滤器。过滤器工作,但是当过滤器被清除时,网格被完全重置。当我在运行时关闭过滤器时,重置会重置,但会在加载期间保持过滤器的应用。

【问题讨论】:

  • 如果您不想在绑定列上进行过滤,您可以添加 c.Bound(m => m.FirstName).Filterable(false) ,这将只关闭该列的过滤,但是为其他所有内容保留过滤。
  • @DavidShorthose 我也在其他页面上使用网格,他们更喜欢它在其他页面的列上具有过滤器。
  • @DavidShorthose 要更详细。网格位于部分页面中,我有一个度量表,其中包含代表这些剑道网格中的项目的计数。选择度量时,从完整数据源中读取Kendo Grid,并使用jQuery进行相应的过滤。为了锁定代表指标的过滤器,我想将其关闭。另一种方法是使用从数据库中检索的不同数据源(新方法,参数)创建新的剑道网格,但这可能导致剑道网格和数据源的大量组合。
  • 查看我根据 Telerik 自己的过滤器网格演示创建的这个道场,让我知道这是否适合您dojo.telerik.com/ogAYO
  • 为了清楚起见,它会从“城市”列中删除过滤器链接。这是在初始化网格时添加的。

标签: jquery kendo-grid kendo-asp.net-mvc


【解决方案1】:

查看我根据 Telerik 自己的过滤器网格演示创建的这个道场,让我知道这是否适合您filter demo

我添加到演示中的代码。

  $(document).ready(function () {
  var preventFilter = 'City'

  console.log($('th[role="columnheader"]').length);
  $('th[role="columnheader"]').filter('[data-role="filtermenu"]').each(function (item) {


      if ($(this).attr("data-field") == preventFilter) {
          console.log('matched')
          $(this).attr("data-role", "");
          $(this).find("a").remove();
          $(this).removeClass('k-filterable');
      }

  });

}); 为了清楚起见,它从 City 列中删除了过滤器链接。这是在初始化网格时添加的。

如果您启用了菜单或行功能,则这基于标题中的过滤器项目,然后您需要适当地更改代码。

很高兴这有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多