为啥 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 回数据库?

为啥组件在状态更改后不重新渲染。在 react-native 函数组件中

为啥全局对象属性在函数后不更新?

编辑后不刷新 ALV。为啥?