为什么在数据库更改后Bindinglist没有更新?

问题描述:

我正在Winforms项目中工作。其中每当我添加或编辑数据库中的记录,并关闭我想我的列表更新。为什么在数据库更改后Bindinglist没有更新?

但在搜索表单中我的列表没有得到更新。为此,我必须从数据库中重新绑定数据。当我搜索并了解绑定列表时,我使用了绑定列表而不是列表,但它仍然不起作用。

这里是我的代码

/// 
/// Represent FirstName Fields 
/// 
public String FirstName { get; set; } 
_MemberMaster.FirstName = Convert.ToString(txtFirstName.Text); 
string result _IMemberMasterController.UpdateMemberMaster(_MemberMaster); 

更新后我闭上我的形式,但在搜索表单列表不更新。当列表得到更新时,我希望datagridview也得到更新。

+1

查找到[BindingSource的.ResetBindings方法](https://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.resetbindings%28VS.80%29.aspx)。基本上在关闭表单之前调用'myBindingList.ResetBindings(false);'。 true或false为:*如果数据模式已更改,则为true;如果只有值已更改,则为false。* –

+0

@KeyurPATEL但mybindinglist在searchfrom中,而我以另一种形式更新数据。当我关闭编辑成员表格,然后我可以去搜索表格 –

我解决我的问题IUNotifyProertyChangedEvent ....

我正要在评论中回复,但我想给出示例代码。

代码后创建一个表单,例如

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 
    } 
} 
+0

正如你所说** myBindingList.ResetBindings(false); **但这不是像** myBindingList.ResetBindings(); **的绑定列表,但它的为Bindingsource并尝试两者,但仍然不woking –

+0

只是为了确认,你正在实施INotifyPropertyChanged,对吧?否则,绑定列表在其更改时不会刷新。参考:[DataGridView绑定到BindingList不会刷新值更改时](http://*.com/a/29266719/6741868) –

+0

是的,我在MemberMaster实现INotifyPropertyChanged,但我知道PropertyChangedEvent总是空的可以哟告诉我如何以搜索的形式致电该事件 –