WinForms アプリケーションでの単純なテーブル編集に問題があります。私は一歩を踏み外したに違いない。
でデータベースに接続されたDataSet
を含む があります。に があります。フォームには、 にバインドされているものがあります。バインドは Designer で行われ、次のような機械で作成されたステートメントが作成されました。DataTable
SqlDataAdapter
SqlCommandBuilder
SqlDataAdapter
TextBoxes
DataTable
this.tbLast.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.belkData, "belk_mem.last", true));
の行に入力するDataTable
と、データベースの値がテキスト ボックスに表示されますが、 の内容を変更するTextBox
と、変更が に反映されないようDataTable
です。変更を保存しようとすると、次の両方が null を返します。
DataTable dtChanges = dtMem.GetChanges();
DataSet dsChanges = belkData.GetChanges();
私は何を忘れましたか?
編集 - mrlucmorinへの応答:
保存はボタンの下にあります。コードは次のとおりです。
BindingContext[belkData, "belk_mem"].EndCurrentEdit();
try
{
DataSet dsChanges = belkData.GetChanges();
if (dsChanges != null)
{
int nRows = sdaMem.Update(dsChanges);
MessageBox.Show("Row(s) Updated: " + nRows.ToString());
belkData.AcceptChanges();
}
else { MessageBox.Show("Nothing to save.", "No changes"); }
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
動作を変更せずに、これらのステートメントを入れてみました。
dtMem.AcceptChanges();
belkData.AcceptChanges();