0

データグリッドビューにルックアップ コンボボックスを追加しました。既存の行を変更したり、新しい行を追加したりすると、保存時に RowState の値が Modified または Added に変更されました。コンボボックスの値を変更することを除いて。保存すると、RowState は変更されないままになります。

コンボボックスを追加するために使用するコードは.

 DataGridViewComboBoxColumn cbQualification = new DataGridViewComboBoxColumn();
            cbQualification.HeaderText = "Course Code";
            DataSet  myDataSet = GetData.GetCoursesData();
            cbQualification.DataSource = myDataSet.Tables[0];
            cbQualification.DisplayMember = "Code";
            cbQualification.ValueMember = "ID";
            cbQualification.DataPropertyName = "QualID";
            grdPersonQuals.Columns.Insert (1,cbQualification);

保存イベントはコードを使用します。

 grdPersonQuals.BindingContext[grdPersonQuals.DataSource, grdPersonQuals.DataMember].EndCurrentEdit();
            foreach (DataRow row in dsPersonQuals.Tables[0].Rows)
            {
                object x = row.RowState;
            }
4

2 に答える 2

1

保存ボタンを押したときにフォーカスがまだコンボボックス列にあると思いますか? 私は常に DataGridView の EndEdit メソッドを呼び出して、データソースの更新をトリガーしてきました。

したがって、保存ボタンイベントで

grdPersonQuals.EndEdit();

あなたはバインディングコンテキストでそれを呼び出していますが、グリッド内の変更をデータソースにプッシュするように、グリッド自体で呼び出す必要があると思います。

于 2012-10-30T13:18:35.567 に答える
0

変更されていない場合は、rowstate を設定できます

    foreach (DataRow row in dsPersonQuals.Tables[0].Rows)
        {
            row.SetAdded(); // or row.SetModified();
            object x = row.RowState;
        }
于 2012-10-29T11:21:57.197 に答える