我要在dataGridView中顯示及時數據,先前的做法是把數據存儲到數據庫再邦定到dataGridView,因為重新邦定數據源帶來一堆問題,而且也不符合Dataset離線數據庫設計思想,所以現在我先更新它內存中的數據即Dataset,然后存儲到數據庫。可是依然發現閃爍的厲害!
以下是更新dataSet.Tables方法:
for (int i = 0; i < ADOHelper.dataSet.Tables[TableName].Rows.Count; i++)
{
Object[] s = new Object[cols];
//...構造數組s
ADOHelper.dataSet.Tables[TableName].Rows[i].ItemArray = s;
DataAdapter.Update(ADOHelper.dataSet, TableName);
}
閃爍的太厲害了,有什么辦法改進,或者用別的控件???
以下是更新dataSet.Tables方法:
for (int i = 0; i < ADOHelper.dataSet.Tables[TableName].Rows.Count; i++)
{
Object[] s = new Object[cols];
//...構造數組s
ADOHelper.dataSet.Tables[TableName].Rows[i].ItemArray = s;
DataAdapter.Update(ADOHelper.dataSet, TableName);
}
閃爍的太厲害了,有什么辦法改進,或者用別的控件???
写到循环外面试试
写到循环外面试试
-------------------
這個應該放外面。但還是一樣結果。我想因為我是更新整個內容,整行整列,有沒什么辦法只更新某列,其它不動。我現在做法等于更新了所有內容:如下
for (int i = 0; i < ADOHelper.dataSet.Tables[TableName].Rows.Count; i++)
{
Object[] s = new Object[cols];
s = ADOHelper.dataSet.Tables[TableName].Rows[i].ItemArray;//取出當前所有內容
s[colindex] = colinfo.Substring(colstart, 4);//此處是我其實要更新的
ADOHelper.dataSet.Tables[TableName].Rows[i].ItemArray = s;
colstart += 4;
}
DataAdapter.Update(ADOHelper.dataSet, TableName);
for (int i = 0; i < ADOHelper.dataSet.Tables[TableName].Rows.Count; i++)
{
Object[] s = new Object[cols];
//...構造數組s
ADOHelper.dataSet.Tables[TableName].Rows[i].ItemArray = s;
DataAdapter.Update(ADOHelper.dataSet, TableName);
}
this.dataGridView1.Visible = true;
for (int i = 0; i < ADOHelper.dataSet.Tables[TableName].Rows.Count; i++)
{
Object[] s = new Object[cols];
s = ADOHelper.dataSet.Tables[TableName].Rows[i].ItemArray;//取出當前所有內容
s[colindex] = colinfo.Substring(colstart, 4);//此處是我其實要更新的
ADOHelper.dataSet.Tables[TableName].Rows[i].ItemArray = s;
colstart += 4;
}
DataAdapter.Update(ADOHelper.dataSet,TableName);
this.dataGridView1.Visible = true;上贴发错了
this.dataGridView1.Visible = true;
--------------------------------------
這個多次執行,那簡直看不見了
現在懷疑dataGridView性能很差,根本不能在Winform實際使用。
不能和以前的一些老Grid控件相比!
只是我的数据虽然是30行,但有十几列,拖動滾動條,就感覺dataGridView反應遲鈍,数据显示缓慢,我是要实用的,这样怎么交货?