我要在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);
              }
閃爍的太厲害了,有什么辦法改進,或者用別的控件???

解决方案 »

  1.   

    把这个DataAdapter.Update(ADOHelper.dataSet, TableName);
    写到循环外面试试
      

  2.   

    把这个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);
      

  3.   

    this.dataGridView1.Visible = false;
    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;
      

  4.   

    this.dataGridView1.Visible = false;
    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;上贴发错了
      

  5.   

    this.dataGridView1.Visible = false;
    this.dataGridView1.Visible = true;
    --------------------------------------
    這個多次執行,那簡直看不見了
      

  6.   

    30行數據,也沒有更新,只是拖動滾動條,就感覺dataGridView反應遲鈍,怎么搞的。
    現在懷疑dataGridView性能很差,根本不能在Winform實際使用。
    不能和以前的一些老Grid控件相比!
      

  7.   

    winform上我都一直都使用datagridview,50行数据反应都很快呀,没出现你的现象,不知道你的具体情况.
      

  8.   

    现在只能尽量延迟保存到数据库,和datagridview帮定的5秒保存一次,这样有效减缓闪烁现象;
    只是我的数据虽然是30行,但有十几列,拖動滾動條,就感覺dataGridView反應遲鈍,数据显示缓慢,我是要实用的,这样怎么交货?