我已经广泛搜索了一种使用存储过程将datagridview中的更改更新到数据库的简单方法,并认为这种方法是我的答案。但我有一个问题。
我有一个项目,其数据源名为“testData”,数据库中的表名为“documents”。
我有一个窗口窗体,我将“文档”表拖到该窗体上,因此文档绑定源和文档表适配器组件被自动添加到我的窗体中。我添加了一个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);
}
}
}