C# Winform DataGridView的列顺序,在运行时/数据源绑定后被改变的问题

如题:
C# Winform  DataGridView的列顺序,在运行时/数据源绑定后被改变的问题,这个问题对于需要控制列顺序的人来说,如果找不到原因,你就会发现一直都控制不了列的顺序。

当然,你可能也有事件处理程序或者其它代码编程导致主动改变了列顺序,甚至你可能设置了独特的样式和主题导致的,但这种不是我们考虑的范围。

我们要讲的是针对数据绑定影响了列的顺序的这个原因,没有人为去控制列顺序的程序下,数据源绑定后列就自动被改变了。

这个问题的处理,需要用到列的DisplayIndex属性,该属性可以设定顺序。


分隔一下,你以为设置了DisplayIndex属性,DataGridView的列,就会乖乖的听你的话顺序排列了?!
不,很多人发现数据源绑定后还是变了,那是因为DisplayIndex的代码位置没有放在正确的位置。

                    DataGridView.Columns["IdColumn"].DisplayIndex = 0;                      //ID
                    DataGridView.Columns["RowNumColumn"].DisplayIndex = 1;                  //序号
                    DataGridView.Columns["RecordTypeColumn"].DisplayIndex = 2;              //类型
                    DataGridView.Columns["SummaryColumn"].DisplayIndex = 3;                 //描述
                    DataGridView.Columns["DataColumn"].DisplayIndex = 4;                    //传输数据
                    DataGridView.Columns["HandleStatusColumn"].DisplayIndex = 5;            //处理结果
                    DataGridView.Columns["ErrorMessageColumn"].DisplayIndex = 6;            //错误信息
                    DataGridView.Columns["DurationColumn"].DisplayIndex = 7;                //请求耗时
                    DataGridView.Columns["CreationTimeColumn"].DisplayIndex = 8;            //创建时间
                    DataGridView.Columns["ReceiveDataColumn"].DisplayIndex = 9;             //ReceiveData
                    DataGridView.Columns["StartTimeColumn"].DisplayIndex = 10;              //StartTime
                    DataGridView.Columns["EndTimeColumn"].DisplayIndex = 11;                //EndTime

比如上面的控制列顺序的代码,你想放哪里?放在OnLoad(EventArgs e)中? 那你就不会有效果,问题解决不了。

                    DataGridView.DataSource = records;

                    #region 列顺序排序

                    DataGridView.Columns["IdColumn"].DisplayIndex = 0;                      //ID
                    DataGridView.Columns["RowNumColumn"].DisplayIndex = 1;                  //序号
                    DataGridView.Columns["RecordTypeColumn"].DisplayIndex = 2;              //类型
                    DataGridView.Columns["SummaryColumn"].DisplayIndex = 3;                 //描述
                    DataGridView.Columns["DataColumn"].DisplayIndex = 4;                    //传输数据
                    DataGridView.Columns["HandleStatusColumn"].DisplayIndex = 5;            //处理结果
                    DataGridView.Columns["ErrorMessageColumn"].DisplayIndex = 6;            //错误信息
                    DataGridView.Columns["DurationColumn"].DisplayIndex = 7;                //请求耗时
                    DataGridView.Columns["CreationTimeColumn"].DisplayIndex = 8;            //创建时间
                    DataGridView.Columns["ReceiveDataColumn"].DisplayIndex = 9;             //ReceiveData
                    DataGridView.Columns["StartTimeColumn"].DisplayIndex = 10;              //StartTime
                    DataGridView.Columns["EndTimeColumn"].DisplayIndex = 11;                //EndTime

                    #endregion

上面的DisplayIndex顺序控制列表,要放在DataGridView.DataSource = datasource;之后,才能解决掉列顺序错乱的问题。

祝您用餐愉快。

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值