如何将初始过滤器添加到剃须刀中的 BootstrapGridView

How to add initial filter to BootstrapGridView in razor

当页面加载时,我需要为给定的列准备好过滤器。

这是一个示例:

@(Html.DevExpress()
             .BootstrapGridView<SomeViewModel>("SomeName")
             ... //other settings
             .Columns(columns => 
             {
                 columns.AddCommandColumn() 
                        .ShowSelectCheckbox(true)
                        .SelectAllCheckboxMode(GridViewSelectAllCheckBoxMode.AllPages);
                 ... //some other columns
                 columns.Add(m => m.SomeBoolProperty).Caption("SomeCaption");
             })
             ... //other settings
 )

好的,现在我需要 "SomeBoolProperty" 的列在网格加载时已经有一个过滤器(假设我只想让 "checked"/true 条目出现在网格中- 模型应该仍然拥有它们,显然,否则我会在控制器中完成)。我能以某种方式在剃刀中做到这一点吗?据我所知,我可以更改过滤器模板,但我实际上可以添加一个过滤器吗?如果不是,我还能怎么做,也许在 javascript?

尝试使用SettingsHeaderFilter 属性,可以给header列添加过滤模式,如果你的列是boolean类型,那么GridHeaderFilterMode.CheckedList 将解决这种情况。

columns.Add(m => m.SomeBoolProperty)
            .Caption("SomeCaption")
                .SettingsHeaderFilter(settings => settings
                    .Mode(GridHeaderFilterMode.CheckedList));

文档:Header Filter - Checked List mode

最后找到了方法,像这样:

@(Html.DevExpress()
         .BootstrapGridView<SomeViewModel>("SomeName")
         ... //other settings

         .OnInitialized((s, e) =>
                {
                    s.AutoFilterByColumn(s.DataColumns["SomeBoolProperty"], "true");
                })

         ... //other settings
         .Columns(columns => 
         {
             columns.AddCommandColumn() 
                    .ShowSelectCheckbox(true)
                    .SelectAllCheckboxMode(GridViewSelectAllCheckBoxMode.AllPages);
             ... //some other columns
             columns.Add(m => m.SomeBoolProperty).Caption("SomeCaption");
         })
         ... //other settings
 )

通过添加OnInitialized。