Я тестирую службы RIA. Я собрал библиотеку RIA Services и создал собственный DomainService (т. Е. Не доменную службу Entity Framework). Я обращаюсь к библиотеке из приложения Silverlight, и все работает так, как ожидалось. Я могу вызвать сервисные функции RIA и получить результаты.Услуги RIA - разбивка на страницы
Моя проблема с разбиением на страницы. Я не могу найти нигде описание использования разбивки на страницы в службе RIA, которая использует собственные службы домена. Служба RIA имеет доступ к специализированному DAL для доступа к данным (и не совместима с платформой Entity Framework). То, что я нашел, было признаком, чтобы передать параметры разбивки на страницы (например, страницу, размер страницы) на функцию службы RIA. Таким образом, я сделал именно это - создал сервисную функцию RIA, которая принимает дополнительные параметры для Page [index] и Page size. Я тестирую это в 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 => x.ScheduleTemplateID)
So; мой вопрос: кто-нибудь видел это поведение - или я делаю ужасную ошибку - если да, то что я делаю неправильно?
Peter
Будет здорово, если вы мало-мальски отформатируете свои ответы. :) –