【问题标题】:How can i filter in telerik grid?我如何在 Telerik 网格中过滤?
【发布时间】:2012-08-20 13:36:51
【问题描述】:

我正在 NopCommerce 的 Telerik 网格上进行一些定制。我想在名为 PercentageCompleted 的一列中实现过滤。现在我该如何实现呢?

【问题讨论】:

  • 你能用网格定义发布你的视图代码吗?

标签: asp.net-mvc-3 razor telerik


【解决方案1】:

您可以在 Telerik 演示站点上查看以下用于 MVC 扩展的 Grid 示例:

http://demos.telerik.com/aspnet-mvc/razor/grid

我们将此演示称为基于 Telerik MVC 扩展的网格的第一次外观。在此示例中,网格绑定到 Northwind 数据库的订单表。这是 Razor 查看代码:

@(Html.Telerik().Grid(Model)
        .Name("Grid")
        .Columns(columns =>
        {
            columns.Bound(o => o.OrderID).Width(100);
            columns.Bound(o => o.ContactName).Width(200);
            columns.Bound(o => o.ShipAddress);
            columns.Bound(o => o.OrderDate).Format("{0:MM/dd/yyyy}").Width(120);
        })
        .DataBinding(dataBinding => 
        {
            dataBinding.Server().Select("FirstLook", "Grid", new { ajax = ViewData["ajax"] });
            dataBinding.Ajax().Select("_FirstLook", "Grid").Enabled((bool)ViewData["ajax"]);
        })
        .Scrollable(scrolling => scrolling.Enabled(true))
        .Sortable(sorting => sorting.Enabled(true))
        .Pageable(paging => paging.Enabled(true))
        .Filterable(filtering => filtering.Enabled(true))
        .Groupable(grouping => grouping.Enabled(true))
        .Footer((true)
)  

如你所见,我们需要先设置全局开关

.Filterable(filtering => filtering.Enabled(true))

它告诉网格它是否可过滤。一旦我们打开这个开关,列集合中的所有列都会;默认情况下对它们进行过滤。

在您的情况下,您只想启用过滤器一列。为了实现这一点,您需要手动关闭那些不需要的列上的过滤功能。例如在上面的代码中,我想禁用 OrderID 和 OrderDate 列上的过滤选项。实现的代码如下:

@(Html.Telerik().Grid(Model)
        .Name("Grid")
        .Columns(columns =>
        {
            columns.Bound(o => o.OrderID).Width(100).Filterable(false);
            columns.Bound(o => o.ContactName).Width(200);
            columns.Bound(o => o.ShipAddress);
            columns.Bound(o => o.OrderDate).Format("{0:MM/dd/yyyy}").Width(120).Filterable(false);
        })
        .DataBinding(dataBinding => 
        {
            dataBinding.Server().Select("FirstLook", "Grid", new { ajax = ViewData["ajax"] });
            dataBinding.Ajax().Select("_FirstLook", "Grid").Enabled((bool)ViewData["ajax"]);
        })
        .Scrollable(scrolling => scrolling.Enabled(true))
        .Sortable(sorting => sorting.Enabled(true))
        .Pageable(paging => paging.Enabled(true))
        .Filterable(filtering => filtering.Enabled(true))
        .Groupable(grouping => grouping.Enabled(true))
        .Footer((true)
) 

希望这能回答您的问题。

Lohith(Telerik India 技术传播者)

【讨论】:

  • 非常感谢...请问您能建议我这样做的代码是什么吗?控制器中应该有什么代码?
  • 您可以在demos.telerik.com/aspnet-mvc/razor/grid 上查看演示的源代码 - 您将在该演示页面中获得视图和控制器代码
【解决方案2】:

像这样将 .Filterable 添加到网格定义中

@Html.Telerik().Grid(Model)
        .Name("Grid")
        .Filterable()

这使得所有具有简单数据类型的列都可以过滤。要指定列,请添加

.Filterable(true)

.Filterable(false)

到每列定义

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 2011-11-16
    相关资源
    最近更新 更多