Я тестирую услуги RIA. Я собрал библиотеку RIA Services и создал собственный DomainService (т.е. не доменную службу Entity Framework). Я получаю доступ к библиотеке из приложения Silverlight, и все работает, как ожидалось. Я могу вызвать сервисные функции RIA и получить результаты.
Моя проблема с нумерацией страниц. Я нигде не могу найти описание использования нумерации страниц в службе RIA, использующей пользовательские службы домена. Моя служба RIA получает доступ к специализированному DAL для доступа к данным (и не совместима с Entity Framework). То, что я нашел, было указанием передать параметры нумерации страниц (то есть страницу, размер страницы) в функцию RIA Service. Так что я сделал именно это - создал сервисную функцию RIA, которая принимает дополнительные параметры для Page [index] и размера страницы. Я тестирую это в Silverlight, используя DataGrid и DataPager. Служба RIA с параметрами разбивки на страницы вызывается (и возвращает данные), а DataGrid заполняется. У меня проблема, когда я иду на другую страницу. Происходит то, что служба RIA вызывается дважды. Первый раз с правильными параметрами (то есть с правильным индексом страницы), затем снова с нулевым индексом страницы). То есть всегда сбрасывается на первую страницу. Я не понимаю, почему это происходит; Я верю, что все собрал правильно (надеюсь). Ниже приведен скрипт XAML:
<riaControls:DomainDataSource
Name="ddsScheduleTemplates"
LoadSize="20"
QueryName="GetPagedScheduleTemplates"
AutoLoad="True"
>
<riaControls:DomainDataSource.DomainContext>
<ds:ScheduleEngineDomainContext/>
</riaControls:DomainDataSource.DomainContext>
<riaControls:DomainDataSource.QueryParameters>
<riaControls:Parameter ParameterName="UserLogonName" Value="admin" />
<riaControls:Parameter ParameterName="UserPassword" Value="admin" />
<riaControls:Parameter ParameterName="Page" Value="{Binding ElementName=dpScheduleTemplates, Path=PageIndex}" />
<riaControls:Parameter ParameterName="PageSize" Value="{Binding ElementName=dpScheduleTemplates, Path=PageSize}" />
</riaControls:DomainDataSource.QueryParameters>
</riaControls:DomainDataSource>
<StackPanel>
<dg:DataGrid
Name="ScheduleTemplatesGrid"
MinHeight="100"
MaxHeight="300"
IsReadOnly="True"
ItemsSource="{Binding ElementName=ddsScheduleTemplates, Path=Data}"
/>
<dg:DataPager
x:Name="dpScheduleTemplates"
PageSize="10"
Source="{Binding ElementName=ddsScheduleTemplates, Path=Data}"
PageIndexChanged="dpScheduleTemplates_PageIndexChanged"
/>
</StackPanel>
Я изменил приведенный выше скрипт для вызова общей функции загрузки (GetPagedScheduleTemplates - возвращает все записи) и скорректировал список QueryParameters для этой функции. DataGrid загружается правильно - и нумерация страниц работает правильно.
Это смутило меня - похоже, DataPager требовал, чтобы все данные были загружены, чтобы он работал должным образом, - но я провел тест, в котором я загрузил все данные в операции постраничного запроса; (то есть настройка свойств пагинации и вызов версии пагинации сервисной функции RIA), но DataGrid все еще сбрасывается.
Примечание: я прочитал, что DataPager требует упорядочить список возврата - так я и сделал - но это не влияло на работу - пейджинг всегда сбрасывается на страницу 1 - ниже приводится список возврата из сервисной функции RIA
newList.ToArray (). AsQueryable (). OrderBy (х => x.ScheduleTemplateID)
Итак, мой вопрос - кто-нибудь видел такое поведение - или я совершаю ужасную ошибку - если да, то что я делаю неправильно?
Peter