【问题标题】:Setting GridView header filters设置 GridView 标题过滤器
【发布时间】:2017-09-07 19:28:55
【问题描述】:

我有一个 DevExpress 网格视图,其中的描述列启用了列标题过滤器。问题在于,启用这些过滤器后,列表中的每个数据项都会在下拉列表中添加一个条目,这并不是真正需要的,因为这些条目通常是文本段落。相反,我想将选项限制为全部、空白和非空白,但我无法找到一个明确的例子来说明如何实现这一点。感谢您的帮助!

答案:

settings.HeaderFilterFillItems = (sender, e) =>
{
    if (e.Column.FieldName == "Description")
    {
       e.Values.Clear();
       e.AddShowAll();
       e.Values.Insert(1, FilterValue.CreateShowBlanksValue(e.Column, "(Blanks)"));
       e.Values.Insert(2, FilterValue.CreateShowNonBlanksValue(e.Column, "(Non Blanks)"));
    }
};

【问题讨论】:

  • 我回答了,希望对你有帮助,另一方面,我在我的项目中使用 DevExpress,但是对于 MVC,我更喜欢使用 DevExtreme,更简单的控件,出色的性能,良好的示例代码和支持跨度>

标签: c# asp.net-mvc devexpress


【解决方案1】:

这个问题和你的https://www.devexpress.com/Support/Center/Question/Details/Q477323/gridview-how-to-customize-header-filter-items类似

在视图中,您可以使用 settings.HeaderFilterFillItems https://demos.devexpress.com/MVCxGridViewDemos/Filtering/Filtering

自定义过滤器项
@Html.DevExpress().GridView(
    settings => {
        settings.Name = "gvFiltering";
        settings.CallbackRouteValues = new { Controller = "Filtering", Action = "FilteringPartial", EnableCheckedListMode = ViewBag.EnableCheckedListMode };
        settings.Width = Unit.Percentage(100);

        settings.Columns.Add("CompanyName");
        settings.Columns.Add("Country");
        settings.Columns.Add("City");
        settings.Columns.Add("UnitPrice").PropertiesEdit.DisplayFormatString = "c";
        settings.Columns.Add("Quantity");
        settings.Columns.Add("Discount").PropertiesEdit.DisplayFormatString = "p0";
        settings.Columns.Add(column => {
            column.FieldName = "Total";
            column.PropertiesEdit.DisplayFormatString = "c";
            column.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;
            column.UnboundExpression = "UnitPrice * Quantity * (1 - Discount)";
        });

        settings.Settings.ShowHeaderFilterButton = true;
        settings.SettingsPopup.HeaderFilter.Height = 200;

        var headerFilterMode = ViewBag.EnableCheckedListMode ? GridHeaderFilterMode.CheckedList : GridHeaderFilterMode.List;
        foreach(GridViewDataColumn column in settings.Columns)
            column.SettingsHeaderFilter.Mode = headerFilterMode;

        settings.HeaderFilterFillItems = (sender, e) => {
            ASPxGridView grid = (ASPxGridView)sender;
            if(e.Column.FieldName == "Total") {
                e.Values.Clear();
                if(e.Column.SettingsHeaderFilter.Mode == GridHeaderFilterMode.List)
                e.AddShowAll();
                int step = 100;
                for(int i = 0; i < 10; i++) {
                    double start = step * i;
                    double end = start + step - 0.01;
                    e.AddValue(string.Format("from {0:c} to {1:c}", start, end), string.Empty, string.Format("[Total] >= {0} and [Total] <= {1}", start, end));
                }
                e.AddValue(string.Format("> {0:c}", 1000), string.Empty, "[Total] > 1000");
            } else if(e.Column.FieldName == "Quantity") {
                int max = 0;
                for(int i = 0; i < e.Values.Count; i++) {
                    int value;
                    if(!int.TryParse(e.Values[i].Value, out value))
                        continue;
                    if(value > max)
                        max = value;
                }
                e.Values.Clear();
                if(e.Column.SettingsHeaderFilter.Mode == GridHeaderFilterMode.List)
                e.AddShowAll();
                int step = 10;
                for(int i = 0; i < max / step + 1; i++) {
                    int start = step * i;
                    int end = start + step - 1;
                    e.AddValue(string.Format("from {0} to {1}", start, end), string.Empty, string.Format("[Quantity] >= {0} and [Quantity] <= {1}", start, end));
                }
            }
        };
    }).Bind(Model).GetHtml()

【讨论】:

  • 这并没有直接回答我的问题,但它足以让我指出我需要让它工作的地方。我已经用我用来完成我打算的实际实现来更新我的问题。谢谢!
猜你喜欢
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
相关资源
最近更新 更多