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