2010-02-01 4 views
0

Dans un projet Silverlight, j'ai une vue avec une liste (DataGrid) de cas. La liste est paginée avec DataPager. Ma collection source est enveloppée dans une PagedCollectionView. Lorsqu'un élément est créé, il est ajouté à la liste et défini comme étant sélectionné dans le DataGrid. Selon le tri de la liste, il peut s'agir d'une autre page active dans le datapager.DataPager et Datagrid, Comment se déplacer vers la page du paramètre sélectionné

Comment allez-vous déplacer le datapager vers la page de l'élément nouvellement ajouté?

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); // Comment mettre en œuvre?

Répondre

0

J'ai trouvé que le meilleur moyen était de chercher la page. J'ai fait la méthode d'extension suivante qui fait exactement cela:

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; 
    } 
} 
Questions connexes