为啥 Bindinglist 在数据库更改后不更新?
Posted
技术标签:
【中文标题】为啥 Bindinglist 在数据库更改后不更新?【英文标题】:Why Bindinglist is not updating after database changed?为什么 Bindinglist 在数据库更改后不更新? 【发布时间】:2017-01-23 04:08:08 【问题描述】:我在 Winforms 项目中工作。每当我在数据库中添加或编辑记录并关闭我想要更新列表的记录时。
但在搜索表单中,我的列表没有更新。为此,我必须再次从数据库重新绑定数据。当我搜索并了解绑定列表时,我使用绑定列表而不是列表,但它仍然无法正常工作。
这是我的代码
///
/// Represent FirstName Fields
///
public String FirstName get; set;
_MemberMaster.FirstName = Convert.ToString(txtFirstName.Text);
string result _IMemberMasterController.UpdateMemberMaster(_MemberMaster);
更新后我关闭了我的表单,但在搜索表单列表中没有更新。当列表更新时,我希望 datagridview 也得到更新。
【问题讨论】:
查看BindingSource.ResetBindings Method。基本上在关闭表单之前调用myBindingList.ResetBindings(false);
。 true 或 false 是: 如果数据模式已更改,则为 true;如果只有值发生了变化,则为 false。
@KeyurPATEL 但 mybindinglist 在 searchfrom 中,我以另一种形式更新了数据。当我关闭编辑会员表格时,我可以去搜索表格
【参考方案1】:
本来准备用cmets回复的,但是想给出示例代码。
创建Form后的代码,例如
Form newForm = new Form();
newForm.Show()
或者你用来制作那个表单的任何方法,添加一个 formClosed 事件处理程序:
Form newForm = new Form();
newForm.FormClosed += new FormClosedEventHandler(f_FormClosed);
newForm.Show();
然后您可以控制表单关闭时发生的情况,因此您可以轻松更新绑定列表。
void f_FormClosed(object sender, FormClosedEventArgs e)
myBindingList.ResetBindings(false);
编辑
在你的 bindingList 构造函数中:(假设它包含字符串)
private BindingList<string> _mybindinglist;
public BindingList<string> myBindingList
get return _mybindinglist;
set
_mybindinglist= value;
OnPropertyChanged("myBindingList"); // or RaisePropertyChanged or whatever you used
【讨论】:
正如你所说的 myBindingList.ResetBindings(false); 但这与 myBindingList.ResetBindings(); 的绑定列表不同,但它的Bindingsource 并尝试两者,但仍然无法正常工作 只是为了确认一下,您正在实施 INotifyPropertyChanged,对吧?否则,您的绑定列表在更改时不会刷新。参考:DataGridView bound to BindingList does not refresh when value changed 是的,我正在 MemberMaster 中实现 INotifyPropertyChanged,但我知道 PropertyChangedEvent 始终为空,你能告诉我如何在搜索表单中调用该事件 感谢您的回答。实际上,我的 Proerty Changed 事件现在没有触发,我的问题已解决,谢谢【参考方案2】:我用 IUNotifyProertyChangedEvent 解决了我的问题....
【讨论】:
以上是关于为啥 Bindinglist 在数据库更改后不更新?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 ApolloQueryWatcher 在突变更改数据后不触发?
值更改时绑定到 BindingList 的 DataGridView 不刷新
C#:将更改从 DataGridView 推送到 BindingList 回数据库?