C#中右键通过listview来控制datagridview字段值的是否显示、显示顺序,并存储到XML中。

最终显示效果,如下图所示:

datagridview开始显示通过调用XML存储的字段值及顺序来显示,右键调出Tools来控制显示的顺序及是否显示,通过加号和减号进行调整顺序。

XML存储字段值及顺序

主要代码及事件:

获取datagridview当前显示的字段值及顺序,并存储到数组中,用于listview显示原始的全部的字段值,以及当前显示的顺序;

        private string[] _GetColunmName()
        {
            string[] value=new string[dataGridView1.ColumnCount]; 
            for (int i = 0; i < dataGridView1.ColumnCount; i++)
            {
                int x = dataGridView1.Columns[i].DisplayIndex;
                value[x]= dataGridView1.Columns[i].HeaderText;
            }
            return value;
        }

从XML中获取需要显示的字段值的信息,并进行显示及显示顺序的设置;

        private void SetColumn(string GridName) //GridName为指定节点的名称;
        {
            string d = GetXmlColumnName(GridName); //调用事件获取指定节点的内容
            string[] dstr = d.Split(',');
            dataGridView1.SuspendLayout();
            for (int i = 0; i < dataGridView1.Columns.Count; i++)
            {
                dataGridView1.Columns[i].Visible = dstr.Contains(dataGridView1.Columns[i].HeaderText);
                string _header = dataGridView1.Columns[i].HeaderText;
                for (int j = 0; j < dstr.Length; j++)
                {
                    string s = dstr[j];
                    if (s == _header)
                    {
                        dataGridView1.Columns[i].DisplayIndex = j;
                    }
                }
            }
            dataGridView1.ResumeLayout(true);
        }

tools页面与主页面通过委托与事件的方式进行调用;

tools的主要代码

Tools的onload的事件代码

  private void Tools_Load(object sender, EventArgs e)
        {
            string[] str = _columnname;//获取调用模块的列明;
            string d = GetXmlColumnName(_mainname); //获取xml中存储的值;

            string[] dstr = d.Split(',');//xml中的列
            //显示全部的GridView名称
            foreach (var _str in str)
            {
                listView1.Items.Add(_str.ToString());
            }
            //将XML中存在的字段名进行打钩选中
            for (int i = 0; i < listView1.Items.Count; i++)
            {
                foreach (var _str in dstr)
                {
                    if (listView1.Items[i].Text == _str.ToString())
                    {
                        listView1.Items[i].Checked = true;
                    }
                }
            }
        }

//保存到XML的代码;_mainname为节点的名称,value为获取的字段名称的顺序;

 private void SaveXmlColumn() 
        {
            string value = "";
            for (int i = 0; i < listView1.Items.Count; i++)
            {
                if (listView1.Items[i].Checked==true)
                {
                    value += listView1.Items[i].Text + ",";
                }
            }
            if (value.Length > 0)
            {
                value = value.Remove(value.Length - 1, 1);
            }
            SaveXmlHeader(_mainname, value); //调用保存到XML中;
            SetXmlColumn();  //调用事件进行显示页面的调整
        }

Demo下载地址:https://download.csdn.net/download/lipeng363622798/88999732

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值