【问题标题】:devexpress gridview filter solutiondevexpress gridview 过滤器解决方案
【发布时间】:2011-07-15 04:39:43
【问题描述】:

我的 asp.net 页面中有一个 devexpress gridview,它有一个过滤器行。内置功能需要我过滤第一个字母而不是中间的字母。

所以“Sa”会找到“Samuel”而不是“Uncle Sam”。要搜索“山姆大叔”,我需要使用 %sa%。我的客户不希望这样。

我找到了一个解决方案,要求我对 gridview 中的每个字段都使用 Settings-AutoFilterCondition="Contains"。我在asp.net程序中有20多个gridview。

是否有任何替代方法可以一次为所有 gridview 设置默认值?

谢谢

【问题讨论】:

    标签: asp.net aspxgridview


    【解决方案1】:

    我建议您在现有主题的基础上创建一个新的 ASP.NET 主题,并在皮肤文件中更改此属性。在这种情况下,您将收到整个网站所需的结果,甚至无需更改任何代码:)

    【讨论】:

      【解决方案2】:

      你可以在后面代码的PageLoad事件中这样设置:

      [VB.NET]
      Protected Sub Page_Load(sender As Object, e As EventArgs)
          For Each col As GridViewDataColumn In grid.Columns
              col.Settings.AutoFilterCondition = AutoFilterCondition.Contains
          Next
      End Sub
      

      【讨论】:

      • 这是对大型网格的改进,但如果我理解正确,他希望在整个站点范围内进行。所以对于每个页面上的每个网格。这会很有用。
      • 好点子,我建议看看 Platon 下面关于创建新主题的评论。这可以轻松解决整个网站的问题。
      • 我没有看到 Platon 的评论?但是,当我找到主题时,我会尝试一下。
      【解决方案3】:

      我通过以下方式实现了这一点:

      1. 添加了如下扩展方法来减少工作,它返回一个类型的所有控件:

        public static IEnumerable<T> GetAllControlsOfType<T>(this Control parent) where T : Control
        {
            var result = new List<T>();
            foreach (Control control in parent.Controls)
            {
                if (control is T)
                {
                    result.Add((T)control);
                }
                if (control.HasControls())
                {
                    result.AddRange(control.GetAllControlsOfType<T>());
                }
            }
            return result;
        }
        
      2. 将以下内容添加到我的基本页面 OnLoad 事件(它继承自页面,并且我的所有页面都继承自),如果您不使用基本页面我推荐它,否则您可以将其添加到每个页面。

           this.GetAllControlsOfType<ASPxGridView>()
            .SelectMany(gv => gv.Columns.OfType<GridViewDataTextColumn>())
            .ForEach(c => c.Settings.AutoFilterCondition = AutoFilterCondition.Contains);
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多