填充網格時我使用的是PLinqInstantFeedbackSource
。在使用PLinqInstantFeedbackSource時獲取GridControl中的所有行
((DevExpress.Xpf.Grid.TableView)gridControl.View).SelectAll();
似乎選擇所有行:
PLinqInstantFeedbackSource pLinqInstantFeedbackDataSource = new PLinqInstantFeedbackSource();
pLinqInstantFeedbackDataSource.GetEnumerable += pLinqInstantFeedbackDataSource_GetEnumerable;
gridControl.ItemsSource = pLinqInstantFeedbackDataSource;
gridControl.DataContext = SomeViewModel;
private void pLinqInstantFeedbackDataSource_GetEnumerable(object sender, DevExpress.Data.PLinq.GetEnumerableEventArgs e)
{
e.Source = SomeViewModel.GetList();
}
所以在使用我選擇的所有行。所以這工作正常,但用戶沒有向下滾動,以便所有行都可見或獲取。
所以現在我要遍歷所有的行,並使用獲得的行對象:
var selectedRowHandles = ((DevExpress.Xpf.Grid.TableView)gridControl.View).GetSelectedRowHandles().AsEnumerable();
foreach (var item in selectedRowHandles)
{
SomeViewModel.SelectedItems.Add((SomeEntityObject)gridControl.GetRow(item));
}
這似乎對所有可見的行工作得很好,但是當它試圖獲取下一行,是不是可見它拋出一個異常:
InvalidCastException
Unable to cast object of type 'DevExpress.Data.NotLoadedObject' to type 'SomeEntityObject'.
那麼,如何使用PLinqInstantFeedbackSource時,當行不可見,以獲得在GridControl所有行。