none
[VB.NET2005+SqlServer2000]主從式表單中的DataGridView RRS feed

  • 問題

  • 各位好,

    我在寫訂單主表-明細表的「主從式表單」,
    主表與明細表利用訂單編號為key來做關聯。

    直接使用VB.NET2005中的資料來源所產生的dataset和自動產生的相關BindingSource、 TableAdapter 等等~
    將主表設定為「詳細資料」,明細表選為DataGridView,拉入windowsForm中,

    若是透過訂單主表的BindingNavigator執行修改或是刪除,運作的都很正常!
    但是新增項目的時候,在子表單的DataGridView中會出現一個狀況!

    就是先將父資料表輸入好之後,
    移到子資料表DataGridView中新增多筆資料時,
    這個DataGridView只會顯示一筆正在新增的Row,
    例如我要輸入5筆明細資料,
    我只能看到現在目前正在打字輸入、新增的一列,
    先前輸入好的資料列都被隱藏起來,
    直到我按下BindingNavigatorSaveItem儲存資料之後,
    DataGridView才會完整顯示五筆資料出來!~


    不知道有沒有遇過類似這樣的狀況?
    為什麼DataGridView會把輸入好的資料列隱藏起來呢?

    傷腦筋中...請大家幫忙!!謝謝!!!~~
    2007年1月25日 上午 10:02

解答

  • 您抓到重點了沒錯

    的確要用暫存的dataset搭配datagrid才能避免頻繁的存取資料庫

    之後再利用暫存dataset一次更新資料庫

     

    2007年1月25日 上午 10:53

所有回覆

  • 先前輸入好的資料列都被隱藏起來並不會顯示出來

    應該是因為那個時間點資料並沒有真正寫入資料庫

    當您儲存成功後DataGridView重新整理後

    先前輸入好的資料因為已存入資料庫所以就會顯示出來

     

    2007年1月25日 上午 10:23
  • 謝謝 MattLee的提示,

    我現在將儲存的動作拆開做,
    先存主表的資料,
    寫入後,每當子資料表有新增的時候,
    就先寫入明細資料,
    並且在DataGridView.NewRowNeeded事件發生時,
    重新整理一次...

    這樣做雖然可以達到目的...
    可是...存取資料庫的動作實在好頻繁....
    有一點不踏實的感覺....我自己寫起來毛毛的說!~

    是不是一定要自己寫暫存的dataset搭配datagrid呢?
    頭好痛~~~呵呵~
    2007年1月25日 上午 10:36
  • 您抓到重點了沒錯

    的確要用暫存的dataset搭配datagrid才能避免頻繁的存取資料庫

    之後再利用暫存dataset一次更新資料庫

     

    2007年1月25日 上午 10:53