时间:2019-03-08 标签:c#datagridviewredcross
c# datagridview red cross
我有一个数据网格视图和数据表。我使用数据表作为数据网格视图的数据源。我使用线程添加和更新数据,如下所示。如果我处理完数据,我会删除它。但是有两次datagridview前面有big red x。我找不到为什么?以下是我的示例。
注意:这种情况并不总是发生,我只遇到过两次这个错误,但我需要处理!提前致谢。
Thread listData;
DataTable dt = new DataTable();
Form1_load()
{
dataGridview.DataSource = dt;
}
public void ListData()
{
foreach(var item in data)
{
if(item.delete)
{
var row = dt.Rows.Find(item.id);
if(row != null) { row.Delete();}
continue;
}
listData = new Thread(delegate() { InsertOrUpdateData(item.Id); });
listData.Start(); listData.Join();
}
}
public void InserOrUpdateData(int id)
{
// Here I retrieve some data from database
// and insert or update to the datatable
// like dt.Rows.Add(fields) and dt.Rows.Find(id)["fieldName"] = "new Value"
}
你需要使用Invoke方法
if (gridView.InvokeRequired)
gridView.Invoke(new MethodInvoker(() => gridView.DataSource = YOUR_DATASOURCE));
else
gridView.DataSource = YOUR_DATASOURCE;
我有一个数据网格视图和数据表。我使用数据表作为数据网格视图的数据源。我使用线程添加和更新数据,如下所示。如果我处理完数据,我会删除它。但是有两次datagridview前面有big red x。我找不到为什么?以下是我的示例。
注意:这种情况并不总是发生,我只遇到过两次这个错误,但我需要处理!提前致谢。
Thread listData;
DataTable dt = new DataTable();
Form1_load()
{
dataGridview.DataSource = dt;
}
public void ListData()
{
foreach(var item in data)
{
if(item.delete)
{
var row = dt.Rows.Find(item.id);
if(row != null) { row.Delete();}
continue;
}
listData = new Thread(delegate() { InsertOrUpdateData(item.Id); });
listData.Start(); listData.Join();
}
}
public void InserOrUpdateData(int id)
{
// Here I retrieve some data from database
// and insert or update to the datatable
// like dt.Rows.Add(fields) and dt.Rows.Find(id)["fieldName"] = "new Value"
}
你需要使用Invoke方法
if (gridView.InvokeRequired)
gridView.Invoke(new MethodInvoker(() => gridView.DataSource = YOUR_DATASOURCE));
else
gridView.DataSource = YOUR_DATASOURCE;