我有一个像我这样绑定的DataGridView:
companies = new BindingList<Company>(PersistenceManager.Instance.RetrieveAll<Company>(SessionAction.BeginAndEnd));
bindingSource.DataSource = companies;
potentialInvestorDataGridView.DataBindings.Add("DataSource", bindingSource, "PotentialInvestors");
问题是当我添加到PotentialInvestors列表
时Company company = bindingSource.Current as Company;
company.PotentialInvestors.Add ( new Investor ( ) );
数据网格不会使用新行进行更新。我试过打电话
bindingSource.ResetCurrentItem();
potentialInvestorDataGridView.EndEdit();
potentialInvestorDataGridView.Refresh();
但似乎没有任何更新数据网格。 (如果我关闭对话框并重新打开它,现在会显示项目。)
我需要做些什么才能正确更新?
答案 0 :(得分:1)
如果基础数据源(PersistenceManager.Instance.RetrieveAll<Company>(...)
的结果)支持通知机制,则只会传播更改。我非常确定,为了使其工作,数据源本身必须支持IBindingList
。您是否有数据源实现的接口列表?
修改强>
您可以通过在gridview上调用Reset
来手动调用ListChanged
事件(网格正在查看的事件)上的ResetBindings
值。但是,这将导致网格刷新所有数据,而不仅仅是已更改的内容。