DevExpress在GridControl中为GridViews单独过滤/排序

时间:2015-12-26 21:25:55

标签: c# .net gridview devexpress

提到的控件来自DevExpress框架。

我使用TabControl并且在tab pages内我始终显示相同的GridControl(更改其父级)。为了给出一个想法,每个选项卡都是一个不同的文件,网格显示了它的一些内容。

无论如何,我的想法是,我可以简单地扩展标签,为每个标签添加GridView,并为数据源添加BindingList并交换MainView + {{只要选择了点按页面,就会在主DataSource上显示1}}。

到目前为止一切正常。

但是,GridControl上应用的过滤器/列已应用于每个Grid(全局),而这似乎存储在GridView上。

长话短说,有没有办法保持过滤/列分类单独 每个 GridControl,或者每次切换选项卡时,我都必须以编程方式存储过滤器/列排序?

也许这甚至是愚蠢的,我应该使用多个GridView与他们自己的GridControls各自或不同的东西?

2 个答案:

答案 0 :(得分:1)

我对如何做到这一点有两点想法。

  1. 将GridControl和GridView实例化为单例,并确保每个标签页调用单例而不是即时新网格。通过这种方式,对一个的任何更改都将持续存在。
  2. 这种方法的缺点是你可能会丢失一些设计时功能,或者不得不破解它们,例如创建一个具有网格的虚拟表单并从中构建单例。

    1. 创建某种类型的全局静态属性,其中包含网格布局的XML。在您SelectedPageChanged的{​​{1}}事件中,您将获得XML并将其应用于该网页的网格。
    2. 以下是#2的示例:

      用于存储当前布局的文件名的公共属性。假设这是一个名为XtraTabbedMdiManager的静态类:

      Globals

      更改布局后,您需要捕获当前布局XML并使用全局文件名保存:

      private static string _CurrentLayoutFile = Path.GetTempFileName();
      public static string CurrentLayoutFile
      {
          get { return _CurrentLayoutFile; }
      }
      

      private void gridView1_Layout(object sender, EventArgs e) { gridView1.SaveLayoutToXml(Globals.CurrentLayoutFile); } 事件中,指定已保存的布局:

      SelectedPageChanged

答案 1 :(得分:0)

好吧,得到了我想要的东西。由于某些其他依赖项,我决定为每个GridControl创建一个TabPage,因此每个都有自己的过滤器/查找/排序列,它将会记住"。

仍然感兴趣,如果这是常见的方式,或者有更好的解决方案。 : - )