DataPager和Datagrid,如何移动到当前selecteditem的页面

时间:2010-02-01 12:11:41

标签: .net datagrid pagination paging datapager

在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); //如何实施?

1 个答案:

答案 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;
    }
}