DataPager não está funcionando no Silverlight 3 + RIA serviços
-
05-07-2019 - |
Pergunta
Eu tenho um aplicativo Silverlight 3 com RIA Serviços e estou correndo em um problema onde meu DataPager é só carregar os dados para o loadsize inicial e, em seguida, deixou de recarga. Ele traz duas páginas de dados (PageSize = 10, LoadSize = 20.) Ele está mostrando corretamente 119 páginas de dados, mas quando eu navegar até a página 3, aparece nada em meu datagrid e DataForms.
Esta é a minha Fonte Data Domain:
<riaControls:DomainDataSource x:Name="_dds" QueryName="GetCaseLoads" AutoLoad="True" PageSize="10" LoadSize="20">
<riaControls:DomainDataSource.DomainContext>
<domain:FooContext />
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
Aqui está o trecho para o DataPager:
<data:DataPager Source="{Binding Data, ElementName=_dds}" />
E aqui está a consulta do Serviço de Domínio:
[RequiresAuthentication()]
public IQueryable<CaseLoad> GetCaseLoads()
{
// Return all case loads
return this.Context.CaseLoadSet;
}
É bastante simples para que eu não sei o que está faltando. Qualquer ajuda seria apreciada;
Solução
Depois de passar tempo demais tentando começar este trabalho eu finalmente descobri o problema, que eu acho que é mais um bug com a tecnologia RIA Serviços porque eu deveria ter começado algum tipo de mensagem de aviso sobre isso.
A correção é simples para ordenar a coleção que está sendo retornado por GetCaseLoads (). Eu fiz assim e funcionou:
[RequiresAuthentication()]
public IQueryable<CaseLoad> GetCaseLoads()
{
// Return all case loads
return this.Context.CaseLoadSet.OrderBy(caseLoad=>caseLoad.fkUserId);
}
surpreendente quanto tempo resolver este pequeno problema levou.
Outras dicas
Eu tive o mesmo problema, eu posso ver a partir do exemplo dado na documentação RIA Visão Geral dos Serviços que eles estão usando LINQ to SQL em vez de LINQ to EF -. Deve ser algo com a diferença entre os dois
Obrigado por postar a solução alternativa, me salvou muitas horas de faffing:)