通过OleDbAdapter填充数据集后如何刷新UI数据?

How to refresh UI data after filling a dataset through OleDbAdapter?

提问人:Tvuce 提问时间:10/3/2023 最后编辑:Tvuce 更新时间:10/3/2023 访问量:37

问:

我有一个简单的WPF VB.Net 应用程序连接到Access数据库。
我正在查询数据库,以用客户数据填充窗口上的文本框,以便我可以编辑、插入和删除它。
文本框位于网格内,我将它们绑定到我从 OleDbAdapter 获取的数据集内数据表的每一列。
我将 Grid.DataContext 绑定到数据集的表。

我的代码如下所示:

Dim sql = "SELECT * FROM Cli WHERE Cod = " & txtCod.Text & ";"
anaDA.SelectCommand = New OleDbCommand(sql, conndb)
anaDA.Fill(anaDS, "Ana")
AnaGrid.DataContext = anaDS.Tables("Ana")

我第一次键入客户索引并运行此代码时,它可以正常工作。
如果我运行 anaDS.Tables(“Ana”)。清除并重做搜索,我的 UI 不会刷新(如果我在运行时暂停并检查,数据表会填充正确的数据)。
我在线阅读,我需要通知 UI 数据集内的数据已更改以刷新文本框,但我该怎么做? 也许我遗漏了一些东西,但是,在数据表被填满后,难道不应该有一种简单的方法来做到这一点吗?
我在谷歌上到处阅读都失去了理智。

先谢谢你!

WPF vb.net .net-core 数据绑定 oledb

评论

0赞 jmcilhinney 10/3/2023
作为记录,您不会从数据适配器获得。数据适配器从你那里获取。DataSetDataSet
0赞 jmcilhinney 10/3/2023
看起来您正在尝试像 WinForms 一样使用 WPF,但它并没有真正以这种方式工作。理想情况下,您应该有一个公开 via 属性的视图模型,然后将该属性绑定到 UI。视图模型将实现,您将引发相应的事件以通知 UI 数据已更改。我不是 WPF 专家,但我认为,在您的情况下,唯一的选择是设置 to 然后再次绑定它。DataTableINotifyPropertyChangedDataContextNothing
0赞 Tvuce 10/3/2023
可悲的是,将 DataContext 设置为 Nothing 并再次绑定它不起作用
0赞 Tvuce 10/3/2023
好吧,无论如何,如果我没有正确使用 WPF,我最好看看如何使用视图模型。谢谢你让我知道!
0赞 jmcilhinney 10/3/2023
您应该研究 MVVM(模型-视图-视图模型)设计模式。这基本上就是 WPF 的完成方式。模型是数据,视图是窗口,视图模型是在两者之间中转的对象,公开特定视图所需的特定数据和行为。

答: 暂无答案