动态保存 DevExpress GridControl 布局(保存列GridColumn的顺序)

视频讲解地址 https://www.bilibili.com/video/BV1nY4y1V7LE

效果图

核心代码

public partial class Form1 : Form
{//原创来自 www.luofenming.com
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        //读取配置信息
        Dictionary<string, int> dic = JosnConfigHelper.ReadConfig<Dictionary<string, int>>();
        gridControl1.DataSource = CreateDataTable();
        if (dic != null)
        {
            foreach (DevExpress.XtraGrid.Columns.GridColumn g in this.gridView1.Columns)
            {
                if (dic.ContainsKey(g.Name))
                {
                    g.VisibleIndex = dic[g.Name];
                }
            }
        }
    }
    /// <summary>
    /// 创建一个DataTable 并带有数据
    /// </summary>
    /// <returns></returns>
    private DataTable CreateDataTable()
    {//原创来自 www.luofenming.com
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("UserName", typeof(string)));
        dt.Columns.Add(new DataColumn("UserQQ", typeof(string)));
        dt.Columns.Add(new DataColumn("UserPwd", typeof(string)));
        for (int i = 0; i < 15; i++)
        {
            DataRow dr = dt.NewRow();
            dr["UserName"] = "lqwvje" + i;
            dr["UserQQ"] = "10000" + i;
            dr["UserPwd"] = "123456";
            dt.Rows.Add(dr);
        }
        return dt;
    }

    /// <summary>
    /// 列位置发生变化时触发事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void gridView1_ColumnPositionChanged(object sender, EventArgs e)
    {
        Dictionary<string, int> dic = new Dictionary<string, int>();
        foreach (DevExpress.XtraGrid.Columns.GridColumn g in this.gridView1.Columns)
        {
            dic[g.Name] = g.VisibleIndex;
        }
        JosnConfigHelper.WriteConfig(dic);//保存配置信息
    }
}

读写配置信息类

public class JosnConfigHelper
{
    public static T ReadConfig<T>()
    {
        if (File.Exists("config.json") == false)//如果不存在就创建file文件夹
        {
            FileStream f = File.Create("config.json");
            f.Close();
        }
        try
        {
            string s = File.ReadAllText("config.json");
            return JsonConvert.DeserializeObject<T>(s);
        }
        catch
        {
            return default(T);
        }
    }

    public static void WriteConfig(object o)
    {
        if (File.Exists("config.json") == false)//如果不存在就创建file文件夹
        {
            FileStream f = File.Create("config.json");
            f.Close();
        }
        string s = JsonConvert.SerializeObject(o);
        File.WriteAllText("config.json", s);
    }
}