2010-02-01 59 views
0

在Silverlight項目中,我有一個包含案例列表(DataGrid)的視圖。該列表使用DataPager分頁。我的源集合包裝在PagedCollectionView中。DataPager和Datagrid,如何移動到當前selecteditem的頁面

創建項目時,它將被添加到列表中並根據列表排序將其設置爲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

我發現最好的方法就是搜索頁面。我提出了以下擴展方法:

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; 
    } 
} 
相關問題