DataPager и Datagrid, как перейти на страницу текущего выбранного элемента - PullRequest
0 голосов
/ 01 февраля 2010

В проекте Silverlight у меня есть представление со списком (DataGrid) дел. Список разбит на страницы с помощью DataPager. Моя исходная коллекция обернута в PagedCollectionView.

Когда элемент создается, он добавляется в список и устанавливается в качестве выбранного элемента в DataGrid, в зависимости от сортировки списка, это может быть на другой странице текущий активный в пейджере данных.

Как бы вы переместили пейджер на страницу вновь добавленного элемента?

    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 голосов
/ 10 февраля 2010

Я нашел, что лучший способ - просто поиск по странице. Я сделал следующий метод расширения, который делает именно это:

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;
    }
}
...