在Silverlight项目中,我有一个包含案例列表(DataGrid)的视图。该列表使用DataPager进行分页。我的源集合包含在PagedCollectionView。
中创建项目时,它会被添加到列表中并在DataGrid中设置为selecteditem,具体取决于列表排序,这可能是数据页中当前活动的另一页面。
您如何将数据抓取器移动到新添加项目的页面?
public PagedCollectionView<CaseDTO> Cases { get; set; }
public void CreateCase()
{
var requestDispatcher = container.GetInstance<IAsyncRequestDispatcher>();
requestDispatcher.Add(GetRequest<CreateCaseRequest>());
requestDispatcher.Add(GetRequest<GetCasesRequest>());
requestDispatcher.ProcessRequests(
responses =>
{
selectedCaseId = responses.Get<CreateCaseResponse>().CaseId;
UpdateCases(responses.Get<GetCasesResponse>());
Cases.MoveToPageOf(SelectedCase); // How to implement?
},
ex => { throw new Exception(ex.ToString()); }
);
}
Cases.MoveToPageOf(SelectedCase); //如何实施?
答案 0 :(得分:0)
我发现最好的方法就是搜索页面。我做了以下扩展方法:
public static class PagedCollectionViewExtension
{
public static bool MoveToPageOf(this PagedCollectionView collectionView, object item)
{
int pageSearched = 0;
while (pageSearched < collectionView.PageSize)
{
if (collectionView.IndexOf(item) != -1)
return true;
collectionView.MoveToNextPage();
pageSearched++;
}
return false;
}
}