Dej*_*ejo 2 c# binding devexpress xtragrid
我有一个List<SomeClass>
绑定DevExpressXtraGrid像:
MyXtraGrid.DataSource = MyList;
Run Code Online (Sandbox Code Playgroud)
我有一些在XtraGrid设计器中制作的列.一切都很好,行显示在网格中,但是当我向MyList添加对象时,网格没有刷新,并且没有显示新项目.
我尝试过MyXtraGrid.Refresh()
,试图重新绑定MyXtraGrid.DataSource = MyList
,但它没有用.
MyXtraGrix.MyView.PopulareColumns()
不是一个选项,因为我不希望MyList中的所有字段都显示在网格中,这将使用设计器配置的列稀疏.
如何刷新网格视图以显示我添加的对象?
只需这样做:
private void BindCollection(IEnumerable collection)
{
// keep current index
GridView view = MyXtraGrid.Views[0] as GridView;
int index = 0;
int topVisibleIndex = 0;
if (view != null)
{
index = view.FocusedRowHandle;
topVisibleIndex = view.TopRowIndex;
}
MyXtraGrid.BeginUpdate();
MyXtraGrid.DataSource = collection;
MyXtraGrid.RefreshDataSource();
if (view != null)
{
view.FocusedRowHandle = index;
view.TopRowIndex = topVisibleIndex;
}
MyXtraGrid.EndUpdate();
}
Run Code Online (Sandbox Code Playgroud)
您还可以获取所选行,并在设置新数据源后重新选择它.
另请注意,List
您可以使用BindingList<>
以使网格自行更新,而无需编写单行代码.在这里阅读更多.