2011-09-01 74 views
0

我创建了一个绑定到C#数据表连接到MS Access数据库的列表框。编辑绑定列表框内容后更新MS Access

这个想法是在列表框中显示表格的内容,并通过选择每一个,然后它将在整个表单上的文本框上显示其他值。我能够做到这一点。我的下一个问题是在编辑文本框中的值时更新数据库。现在我所做的就是创建一个更新按钮,它将更新列表框中的值,然后调用列表框正在使用的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

当使用Update,执行的顺序如下:

  • DataRow的值被移动到的参数值。

  • OnRowUpdating事件引发。

  • 该命令执行。

  • 如果该命令设置为FirstReturnedRecord,那么第一个返回的结果将被放置在DataRow中。

  • 如果有输出参数,它们被放置在DataRow

  • 提出OnRowUpdated事件。

  • AcceptChanges被调用。

所以去除dEmployeesTable.Rows[lstEmployees.SelectedIndex].AcceptChanges();线,然后再试一次

AcceptChanges提交更改的数据集或数据表。所有添加和修改的行 变成"Unchanged"

当您拨打Update (..)时,数据适配器不会 找到任何修改的行进行更新。 Update()内部调用AcceptChanges()