DataGirdView 新建 Row 鼠标点击 数据变成 空白 的问题

今日使用DataGridView

在Form中Init代码如下:

   dataGridView1.SetColumn(typeof(DebtNormal),ePropertyFieldFilter.All);
          
            var debtinfo = new DebtNormal();
            debtinfo.债券代码="测试";
             var row = new DataGridViewRow();
                        row.Tag = debtinfo;
                        dataGridView1.Rows.Add(row);                                                   
                    row.SetRowValues(debtinfo.ToItems(ePropertyFieldFilter.Field));
                    _dtDebtRow.Add("测试", row);

此时dataGridView1启动后一切正常,我们看到 这里使用了new  DataGridViewRow()语句


但是在运行中添加新的row,

语句如下:

  void _parseDebtNormalInfo_OnDataUpdated(DebtNormal arg_debtinfo)
        {
            this.Invoke(new Action(() =>
                {
                    if (!_dtDebtNormal.ContainsKey(arg_debtinfo.债券代码))
                        _dtDebtNormal.Add(arg_debtinfo.债券代码, arg_debtinfo);

                    //dataGridView1.DataSource = null;
                    //dataGridView1.DataSource = _dtDebtNormal.Values.ToArray();

                    var debtinfo = arg_debtinfo;

                    var row = (DataGridViewRow)null;
                    if (_dtDebtRow.TryGetValue(debtinfo.债券代码, out row))
                    {
                        Debug.Set(debtinfo.债券代码, "hello");
                    }
                    else
                    {

                        row = new DataGridViewRow();// dataGridView1.Rows[dataGridView1.Rows.Add() - 1];
                        dataGridView1.Rows.Add(row);
                        //row.Tag = debtinfo;                       
                        _dtDebtRow.Add(debtinfo.债券代码, row);
                        row.SetRowValues(debtinfo.ToItems(ePropertyFieldFilter.Field));
                    }
                   

                    var rowTest = _dtDebtRow["测试"];
                    var dinfoTest = rowTest.Tag as DebtNormal;
                    dinfoTest.主体评级 = "pig";
                    rowTest.SetRowValues(arg_debtinfo.ToItems(ePropertyFieldFilter.Field));
                    //row.SetRowValues(dinfoTest.ToItems(ePropertyFieldFilter.Field));
                }));
           
          
        }

这里我们也是用 new DataGridViewRow() 的语句, 此时,运行中数据显示正常,但是一旦鼠标点击新建出来的数据,我们会发现,变成了空白。


必须把 new DataGridViewRow() 代码改成 datagridView1.Rows.Add(); 让其内部自动添加,然后设置这个row

                        row = dataGridView1.Rows[dataGridView1.Rows.Add() - 1];
                        //row.Tag = debtinfo;                       
                        _dtDebtRow.Add(debtinfo.债券代码, row);
                        row.SetRowValues(debtinfo.ToItems(ePropertyFieldFilter.Field));


这样就没有问题了


转载于:https://www.cnblogs.com/norsd/archive/2013/04/10/6359420.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值