私は、ストアド プロシージャを使用してデータグリッドビューの変更をデータベースに更新する簡単な方法について広範囲に検索し、この方法が私の答えだと考えました。しかし、私には問題があります。
「ドキュメント」と呼ばれるデータベースのテーブルを含む「testData」と呼ばれるデータソースを持つプロジェクトがあります。
「ドキュメント」テーブルをドラッグした Windows フォームがあるため、documentsBindingSource および documentsTableAdaptor コンポーネントが自動的にフォームに追加されました。datagridview を追加し、そのデータソースを documentsBindingSource; に設定しました。以下のコードビハインドを含む「更新」ボタン。
すべて正常に動作し、実行時にデータが読み込まれ、datagridview のデータを変更できます。
ただし、「更新」ボタンをクリックすると、「(dgvDocumentName.DataSource as DataTable).Rows」(コードで強調表示)「 ... オブジェクトのインスタンスに設定されていません」というエラー メッセージが表示されます。
私が間違っていることや見逃したことについてのガイダンスをいただければ幸いです。
ありがとう。
「更新」ボタンの分離コード:
private void btnUpdate_Click(object sender, EventArgs e)
{
dgvDocumentName.EndEdit();
foreach (DataRow row in (dgvDocumentName.DataSource as DataTable).Rows)
{
if (row.RowState != DataRowState.Unchanged)
{
String sAction;
switch (row.RowState)
{
case DataRowState.Added:
sAction = "I";
break;
case DataRowState.Deleted:
sAction = "D";
break;
case DataRowState.Modified:
sAction = "U";
break;
default:
sAction = "U";
break;
}
documentsTableAdapter.procActionDocuments(Convert.ToInt32(row["colDocumentID"]),
row["colDocumentName"].ToString(),
Convert.ToInt32(row["colDocumentType"]),
row["colDocumentText"].ToString(),
sAction);
}
}
}