zhu6006 发表于 2013-11-1 21:42:32

DevExpress控件GridControl中的布局详解

在进行DevExpress控件GridControl的使用时,因控件的灵活性,所以用户会经常进行拖动控件的列,以达到自己满意的样式,

但下次再打开时系统就会重新还原到原有的布局风格,为了能够保持用户之前设置的风格,下次再打开时依然保持原有的风格。

在gridView中有两个方法:SaveLayoutToXml(保存布局),RestoreLayoutFromXml(恢复布局)

以下是具体的代码:


      private string systempath = "C:\\Program Files\\";
      /// <summary>
      /// 保存风格
      /// </summary>
      /// <param name="moduleid"></param>
      /// <param name="saveType"></param>
      private void SaveLayout(string moduleid, string saveType)
      {
            string path = systempath + "窗体风格\\" + moduleid+"\\";
            string file = saveType + "view.xml";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
         m_gridView.SaveLayoutToXml(path+file);
      }
      /// <summary>
      /// 加载风格
      /// </summary>
      /// <param name="moduleid"></param>
      /// <param name="saveType"></param>
      private void LoadLayout(string moduleid, string saveType)
      {
            string path = systempath + "窗体风格\\" + moduleid + "\\";
            string file = saveType + "view.xml";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            if (!File.Exists(path + file))
                return;
            m_gridView.RestoreLayoutFromXml(path + file);
      }
      /// <summary>
      /// 布局变化时产生事件
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      private void m_gridView_Layout(object sender, EventArgs e)
      {
            SaveLayout(m_controlManager.Owner.ModuleId, "Master");
      }

      /// <summary>
      /// gridcontrol load Event
      /// </summary>
      /// <param name="sender">The source of the event.</param>
      /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
      private void m_gridControl_Load(object sender, EventArgs e)
      {
            SaveLayout(m_controlManager.Owner.ModuleId, "Default");

            LoadLayout(m_controlManager.Owner.ModuleId, "Master");
      }

heimuheimulm 发表于 2013-11-2 00:34:08

感谢分享~~~~~

zggaoshou 发表于 2013-12-6 10:38:38

我觉得这个应该写到数据库里去,不然换台电脑又得重新布局

dayup126 发表于 2016-8-5 00:00:51

保存到数据库 加载时速度稍微慢点

ssjun 发表于 2016-8-5 08:53:18

本帖最后由 ssjun 于 2016-8-5 08:55 编辑

dayup126 发表于 2016-8-5 00:00
保存到数据库 加载时速度稍微慢点
可以在本地生成一数据库,在启动程序时后台自动同步服务器数据库。在运行程序时在本地提取,再使用多线程。速度会很快,变更时,程序异步后台同步本地与服务器数据库
页: [1]
查看完整版本: DevExpress控件GridControl中的布局详解