DataGridView 通过代码添加列的数据丢失问题

故障:

WinForm VS2008开发环境 

在一个TabControl 中的一个Tab中拖拽了一个DataGridView,对其进行数据源的绑定,然后再通过代码为该表格添加一个列,然后foreach所有行,对其单元格进行赋值。

示例代码:

    gv1.DataSource = s;

            DataGridViewColumn dgColumn = new DataGridViewTextBoxColumn();

            dgColumn.HeaderText = "新列";

            dgColumn.Name = "rowNew";

            gv1.Columns.Add(dgColumn);

            foreach (DataGridViewRow arow in gv1.Rows)

            {

                arow.Cells[1].Value = "修改绑定值";

                arow.Cells["rowNew"].Value = "新增列赋值";

            } 

 执行结果:

 

 图一

 

图二

 

如果默认选择tabPage1时,也就是DataGridView控件没有显示的时候,对其新增列的值进行修改时,执行结果如图一,值没有被保存上,但对绑定列地址的修改确能成功。但如果默认选择tabPage2时对表格进行增加列操作,值却能正确显示,如图二。

 分析:

 可能是DataGirdView控件在对新增列赋值时,只是在呈现层做了修改,而值并没有被保存,所以当从tabPage1切换到2时对DataGridView进行了重绘,当然也就丢失了对其赋值,但对绑定列的修改确实对绑定数据源的修改。不知道这算不算微软的一个BUG,希望大家指点。

转载于:https://www.cnblogs.com/peiyutao/archive/2010/05/27/1745149.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值