编辑绑定列表框内容后更新 MS Access

Posted

技术标签:

【中文标题】编辑绑定列表框内容后更新 MS Access【英文标题】:Update MS Access after editing bound listbox contents 【发布时间】:2011-09-01 18:37:32 【问题描述】:

我在连接到 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 试过了,它工作正常,包括编辑和删除。不知道为什么它不适用于列表框。

我试过四处寻找并搜索 *** 和其他网站,但找不到任何接近的东西。

【问题讨论】:

【参考方案1】:

使用Update时,执行顺序如下:

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

引发OnRowUpdating 事件。

命令执行。

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

如果有输出参数,则放在DataRow中。

引发OnRowUpdated 事件。

AcceptChanges 被调用。

所以删除dEmployeesTable.Rows[lstEmployees.SelectedIndex].AcceptChanges();这一行再试一次

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

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

【讨论】:

以上是关于编辑绑定列表框内容后更新 MS Access的主要内容,如果未能解决你的问题,请参考以下文章

从列表框中删除项目(MS Access VBA)

MS Access:组合框重新查询

更新取消事件之前的 MS Access 不适用于未绑定的组合框

MS-Access 连接表在两个互斥列表之间插入/删除(2 个列表框)

如何以ms访问形式将mysql中数据库中的数据或表显示为可编辑? (像列表框一样可编辑)

Access - 使用多选列表框 VBA 从表单值更新查询