111,129
社区成员
发帖
与我相关
我的任务
分享









我上面写的这段,是更新数据与显示数据 条目相等的,我可以处理了。谢谢!
另外对于新增和删除,应该是怎么个处理方式?
删除,将DataGridView中对应的行删除,数据源中同样删除。
新增,DataGridView的处理是怎么个方式?




[/quote]
如果是新增和删除,可能就要通过Invalidate()重画整个DataGridView的客户区 因为判断删除和插入的位置是比较麻烦的 尤其是还有排序的情况下,
这个最大的问题是如果频率很高 可能会造成界面闪烁
我上面写的这段,是更新数据与显示数据 条目相等的,我可以处理了。谢谢!
另外对于新增和删除,应该是怎么个处理方式?
删除,将DataGridView中对应的行删除,数据源中同样删除。
新增,DataGridView的处理是怎么个方式?





//*******************************************
conlistnew = fub.GetConMEntity(); //获取新的数据
for (int m = 0; m < conlistold.Count; m++)
{
if (conlistold[m].Con_id == conlistnew[m].Con_id) //主键相等
{
if (conlistold[m].Lightstate != conlistnew[m].Lightstate) //更新部分不等向下执行
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
int ic = Convert.ToInt32(dataGridView1.Rows[i].Cells["con_id"]);
if (conlistold[m].Con_id == ic) //确认主键
{
conlistold[m] = conlistnew[m]; //数据更新 ????
dataGridView1.InvalidateRow(i);
}
}
}
}
}
conlistold = conlistnew; //更新数据????
//********************************************[/quote]
conlistold = conlistnew; //更新数据???? 是不需要写的
其他地方看上去也没什么错误啊
你调试看看conlistold的数据是否正确更新了
conlistold[m] = conlistnew[m];是不是执行了并且数据改变了//*******************************************
conlistnew = fub.GetConMEntity(); //获取新的数据
for (int m = 0; m < conlistold.Count; m++)
{
if (conlistold[m].Con_id == conlistnew[m].Con_id) //主键相等
{
if (conlistold[m].Lightstate != conlistnew[m].Lightstate) //更新部分不等向下执行
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
int ic = Convert.ToInt32(dataGridView1.Rows[i].Cells["con_id"]);
if (conlistold[m].Con_id == ic) //确认主键
{
conlistold[m] = conlistnew[m]; //数据更新 ????
dataGridView1.InvalidateRow(i);
}
}
}
}
}
conlistold = conlistnew; //更新数据????
//********************************************