Silverlight: подкачка данных с сервера
У меня есть серверный API, который предоставляет выгружаемые данные в формате JSON на основе различных параметров запроса. Я хотел бы предоставить пользовательский интерфейс, который позволяет пользователю перелистывать результаты запроса.
Я знаю о различных компонентах, которые разрешают такой интерфейс, IPagedCollectionView и ICollectionView на уровне модели модель / представление и DataPager в пользовательском интерфейсе. Тем не менее, все примеры, которые я видел, реализуют разбиение на страницы поверх данных, которые уже были загружены в модель или модель представления.
Я надеялся найти где-нибудь реализацию IPagedCollectionView, где вы просто подключаете свой метод 'fetcher', который выбирает данную страницу данных с сервера, плюс предоставляет немного метаданных (всего страниц и т. Д.)
Я мог бы написать это сам на основе интерфейсов IPagedCollectionView и ICollectionView, но я был бы удивлен, если бы не было стандартного решения этой проблемы.
Будем благодарны за любые ссылки на более подходящие части фреймворка или библиотеки, которые расширяют фреймворк!
2 ответа
У нас был тот же вопрос, и мы решили с новым DomainCollectionView, который является частью WCF RIA Services SP1. Что из этого означает, что вы должны использовать RIA Services, не знаю, если это вариант.
DomainCollectionView (который уже реализует требуемый интерфейс IPagedCollectionView) поставляется в сочетании с DomainCollectionViewLoader, который можно использовать для извлечения данных для текущей страницы.
Для меня этот пост в блоге Кайла Макцеллана был очень полезным:
[Обновление] Вы также можете найти этот пост в блоге полезным:
Это пользовательская реализация интерфейса IPagedCollectionView. Мы используем его в одном месте, где мы собираем данные из разных источников данных, а DomainCollectionView не применяется.
Вы можете попробовать сервисы данных WCF, которые, я полагаю, могут прокормить JSON. у него есть API для "продолжения", которые являются эффективно постраничными запросами. Вам может показаться немного странным использовать это как обертку, но я уверен, что вы могли бы заставить это работать.