2013-03-22 68 views
0

我正在開發c#中的windows應用程序。在gridview中查詢數據

我有一個約40k記錄的gridview。

在那個gridview我有複選框。

我想只更新那些被檢查的記錄。

我寫它下面的代碼>>

for (int i = 0; i < gvTradeFile.Rows.Count; i++) 
      { 

       try 
       { 
        DataGridViewCell cell = gvTradeFile.Rows[i].Cells[0]; 
        bool check = (bool)cell.Value; 

        if (check) 
        { 
         try 
         { 
          con.Open(); 
          cmd = new SqlCommand("update tradeFile set Party_Code='" + txtTransferPartyCode.Text + "' where Party_Code='" + gvTradeFile.Rows[i].Cells[1].Value.ToString() + "' and TradeNo='" + gvTradeFile.Rows[i].Cells[6].Value.ToString() + "' and Sauda_Date='" + gvTradeFile.Rows[i].Cells[13].Value.ToString() + "' and OrderNo='" + gvTradeFile.Rows[i].Cells[14].Value.ToString() + "'", con); 
          cmd.ExecuteNonQuery(); 
          con.Close(); 
         } 
         catch (Exception ex) 
         { 
          MessageBox.Show(ex.Message); 
         } 
         finally 
         { 
          con.Close(); 
         } 
        } 



       } 
       catch (Exception ex) 
       { 
       } 
      } 

在這一點,如果我們看一下for loop我處理網格中的每一行。

是否有任何特定的技術,我可以通過它直接採取檢查行[通過網格中的複選框] for循環?

上面的代碼工作正常,但由於每一行都被檢查,exe被掛起。

請幫幫我。

+0

可能是一個愚蠢的問題,但你在屏幕上顯示40k行嗎?是否有人手動檢查這些? – Dave 2013-03-22 12:22:58

+0

是手動檢查是在行上完成的。還提供過濾器。@ DaveRook – Freelancer 2013-03-22 12:24:57

回答

1

我認爲,如果複選框被選中,然後批量更新數據庫,您應該維護數據表或字典。你可以谷歌批量更新

+0

非常感謝Rohit。 – Freelancer 2013-03-22 12:42:49

1

我不是很確定,但我認爲你不能得到任何返回檢查行的gridview函數。

但是,您可以通過保持記錄選中gridview複選框的哪一行來手動執行此操作。根據您維護的列表更新數據庫。

1

我可以想到2個選項。

  1. 您可以將保存保存到一個新線程,然後讓您的同事/客戶端假設它已保存或顯示「保存」圖形。

  2. 將整個事件一次拆分爲1000條記錄。這樣,你只能顯示第一個1k,編輯,保存。然後顯示下一個1k,編輯,保存!這將減少開銷。