您的位置:首页 > 其它

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

2013-04-10 14:12 387 查看
今日使用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));


这样就没有问题了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐