none
如何讓一個欄位不會被DataAdapter更新 RRS feed

  • 問題

  • 因為作業的需要,小弟希望DataGrid的每行row都能有一個checkbox,所以在DataAdapter的設定如下:

    SelectCommand:select false as chk, id, name, age from student

    UpdateCommand:update student set name=@name,age=@age where id=@id

    chk是虛構的欄位,可以讓DataGrid產生一個checkBox形態的欄位.

    有一個問題是,如果user點選了checkBox,沒有更動其他欄位,dataSet還是會視這筆資料有變動過,造成DataAdapter.Update多執行了沒用的Command,有沒有辦法可以避免這樣的情況?

    2006年11月4日 上午 09:22

解答

  • 那你要自己判斷 .
    因為 DataAdapter.Update() 會看 DataRow 的 RowState 來決定要做的動作 .

    所以你要做的是,如果一個 DataRow 被勾選但檢查後確定沒變更內容時,就呼叫那個 DataRow 的 AcceptChanges(),它會把 RowState 改成 Unchanged,這樣就不會被 DataAdapter.Update() 寫入資料庫 .

    2006年11月4日 上午 10:42
    版主

所有回覆

  • 那你要自己判斷 .
    因為 DataAdapter.Update() 會看 DataRow 的 RowState 來決定要做的動作 .

    所以你要做的是,如果一個 DataRow 被勾選但檢查後確定沒變更內容時,就呼叫那個 DataRow 的 AcceptChanges(),它會把 RowState 改成 Unchanged,這樣就不會被 DataAdapter.Update() 寫入資料庫 .

    2006年11月4日 上午 10:42
    版主
  • 了解了,加入這樣的判斷應該就可以了,
    非常感謝!
    2006年11月6日 上午 09:28