关于GridValue的刷新,列顺序混乱问题解决以及关于显示和隐藏列的办法

描述:我们在datagridvalue中实现数据显示,那么当我们在显示了一个Table后,我们想把这个table的某个,或某些字段隐藏,或者在隐藏字段和我们又想显示列

首先,我们有个数据Table------------DataTable非空;

 DataGridValue.DataSource = DataTable;//这是全部显示Datatable里的数据;

1.当我们想隐藏DataGridValue部分的列的时候。

   我们可以这样:DataTable.Columns[Index].ColumnMapping = MappingType.Hidden;//其实这是映射到结构内部。但是效果也是隐藏列

2.当我们想显示上面隐藏的DataGridValue列,那该怎么办。

   这里,我们需要记录下原始Table数据。然后DataTable = Table.Copy();//这里DataTable就是一个新的表,需要拷贝下,如果直接赋值——DataTable = Table(那么赋值的时候源数据给的是地址指针,也就是它们指向的是同一个对象,源数据也就被污染了)。然后根据要显示的列和隐藏列设置MappingType.Hidden;


这里需要指出一个问题--------当你重新绘制DataGridValue时候,你用了DataGridValue.Refesh();但是列字段是错位的,也就是混乱显示列。也就是Refresh貌似没起作用。那么乃可以这样,首先在重新给DataGridValue.DataSource赋值的时候,清空DataGridValue ----------------DataGridValue.DataSource = null;然后继续上面的操作,即可。

      

另一种不显示隐藏列的做法,就是去除列,便于打印当前显示数据,不打印隐藏的列。

                  for (int x = 1; x < EndDataS.Columns.Count;)
                    {
                        if (EndDataS.Columns[x].ColumnMapping == MappingType.Hidden)
                        {
                            EndDataS.Columns.RemoveAt(x);
                        }
                        else
                        {
                            x++;
                        }
                    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值