我创建了一个列表框,该列表框绑定到连接到MS Access数据库的C#中的数据表。
这个想法是在列表框中显示表的内容,然后通过选择每个表,它将在整个表单的文本框中显示其他值。我能做到这一点。我的下一个问题是在编辑文本框中的值时更新数据库。现在我做的是创建一个更新按钮,然后更新列表框中的值,然后调用列表框正在使用的dataAdapter的Update()函数,但它似乎没有影响表。我的代码如下。
private void btnUpdate_Click(object sender, EventArgs e)
{
if (lstEmployees.SelectedIndex > -1)
{
dEmployeesTable.Rows[lstEmployees.SelectedIndex].BeginEdit();
dEmployeesTable.Rows[lstEmployees.SelectedIndex]["LastName"] = txtLastName.Text;
dEmployeesTable.Rows[lstEmployees.SelectedIndex].AcceptChanges();
dAdapter2.Update(dEmployeesTable);
}
}
我错过了什么吗?我已经尝试使用datagridviews,它工作正常,包括编辑和删除。不确定为什么它不适用于列表框。
我试过四处寻找并搜索stackoverflow和其他网站,但我找不到任何接近的东西。
答案 0 :(得分:0)
使用Update时,执行顺序如下:
DataRow中的值将移至参数值。
引发OnRowUpdating事件。
执行命令。
如果命令设置为FirstReturnedRecord,则第一个返回的结果将放在DataRow中。
如果有输出参数,则将它们放在DataRow。
引发OnRowUpdated事件。
AcceptChanges被调用。
删除dEmployeesTable.Rows[lstEmployees.SelectedIndex].AcceptChanges();
行,然后重试
AcceptChanges
提交对数据集或数据表的更改。所有添加和修改的行
成为"Unchanged"
。
当您致电Update (..)
时,数据适配器不会
找到要更新的任何修改行。 Update ()
在内部调用AcceptChanges ()
。