none
Datagridview新增,最後一筆會憑空消失 RRS feed

  • 一般討論

  • 最近使用BindingSource連接Datagridview,另外有覆寫BindingSource的addingnew事件,

    若有兩層資料表(Parent,Child),我發現在(子資料表)datagridview輸入的最後一筆往往會自動消失,

    已經卡住很久,也找不到解決方法,麻煩先進給些建議

    ex:

    現有兩組資料要輸入,每組資料都是一筆父資料對應兩筆子資料

    第一組父資料表:parent1   子資料表:chi1-1,child1-2

    第二組:父資料表:parent2   子資料表:chi2-1,child2-2

    當我輸入完第一組之後,不存檔直接按下navigator新增,要輸入第二組,第一組最後的child1-2整行會消失,而child1-1就不會不見.

    但新增第一組完,滑鼠移到別的地方再回到datagridview,再按下新增就不會不見.子資料表的addingnew程式碼如下

    private void 子資料表BindingSource_AddingNew(object sender, AddingNewEventArgs e)
                {
                        //若有上一層TABLE,則上層BINDSOURCE需要資料更新(重要)
                        this.父資料表BindingSource.ResetBindings(false);

                        //新增資料並進行資料處理
                        DataView view = (DataView)this.子資料表BindingSource.List;
                        DataRowView newobj = view.AddNew();
                        newobj["PREFERRED_ORDER"] ="aaa";

                        e.NewObject = newobj;
                        this.子資料表.ResetBindings(false);
                        子資料表BindingSource.MoveLast();

                }

    2012年7月23日 上午 10:04

所有回覆

  • 有沒有試過將新增的資料加入到BindingSource的DataSource屬性管理的資料來源中, 而不是利用DataView來新增?
    2012年7月23日 上午 10:23
  • 後來我在子資料表BindingSource_AddingNew內加上row.endedit與row.beginedit方法來走旁門,就可以了-_-

    private void 子資料表BindingSource_AddingNew(object sender, AddingNewEventArgs e)
    {
    //若有上一層TABLE,則上層BINDSOURCE需要資料更新(重要)
    this.父資料表BindingSource.ResetBindings(false);

    //新增資料並進行資料處理
    DataView view = (DataView)this.子資料表BindingSource.List;
    DataRowView newobj = view.AddNew();
    newobj["PREFERRED_ORDER"] ="aaa";
    newobj.endEdit();

    newobj.beginEdit();
    e.NewObject = newobj;
    this.子資料表.ResetBindings(false);
    子資料表BindingSource.MoveLast();

    }

    2012年7月24日 上午 10:16