zoukankan      html  css  js  c++  java
  • 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,希望大家指点。

  • 相关阅读:
    通过HTTP发包工具了解HTTP协议
    Oracle之数据库安全
    SQL注入深入剖析
    apache中如何调用CGI脚本
    fastcgi php-cgi与php-fpm区别和之间的关系
    使用PHPExcel实现Excel文件的导入和导出(模板导出)
    学会数据库读写分离、分表分库
    框架Thinkphp5 简单的实现行为 钩子 Hook
    php文件下载
    PHP为JSON数据的API返回空数组或者空对象
  • 原文地址:https://www.cnblogs.com/peiyutao/p/1745149.html
Copyright © 2011-2022 走看看