2009-07-30 9 views
2

Ich habe eine Silverlight 3 App mit RIA Services und ich stoße auf ein Problem, bei dem mein DataPager nur Daten für die anfängliche Ladegröße lädt und dann nicht mehr neu lädt. Es werden zwei Datenseiten angezeigt (PageSize = 10, LoadSize = 20). Es werden 119 Datenseiten korrekt angezeigt, aber wenn ich zu Seite 3 navigiere, wird in meinen Datagrid- und Datenformularen nichts angezeigt.DataPager funktioniert nicht in Silverlight 3 + RIA Services

Dies ist meine Domain Datenquelle:

<riaControls:DomainDataSource x:Name="_dds" QueryName="GetCaseLoads" AutoLoad="True" PageSize="10" LoadSize="20"> 
    <riaControls:DomainDataSource.DomainContext> 
     <domain:FooContext /> 
    </riaControls:DomainDataSource.DomainContext> 
</riaControls:DomainDataSource> 

das Snippet für das Datapager hier:

<data:DataPager Source="{Binding Data, ElementName=_dds}" /> 

Und hier ist die Domain-Service-Abfrage:

[RequiresAuthentication()] 
public IQueryable<CaseLoad> GetCaseLoads() 
{ 
    // Return all case loads 
    return this.Context.CaseLoadSet; 
} 

Es ist ziemlich einfach so Ich bin mir nicht sicher, was fehlt. Jede Hilfe würde geschätzt werden;

Antwort

3

Nachdem ich viel zu viel Zeit damit verbracht habe, das zu erreichen, habe ich das Problem ENDGÜLTIG herausgefunden, was meiner Meinung nach eher ein Fehler bei der RIA Services Technologie ist, da ich eine Art Warnmeldung bekommen hätte.

Die einfache Lösung besteht darin, die von GetCaseLoads() zurückgegebene Sammlung zu bestellen. Ich tat es so und es funktionierte:

[RequiresAuthentication()] 
public IQueryable<CaseLoad> GetCaseLoads() 
{ 
    // Return all case loads 
    return this.Context.CaseLoadSet.OrderBy(caseLoad=>caseLoad.fkUserId); 
} 

Erstaunlich, wie viel Zeit dieses kleine Problem zu lösen nahm.

0

Ich hatte das gleiche Problem, ich kann aus dem Beispiel in der RIA Services Overview Dokumentation sehen, dass sie LINQ to SQL statt LINQ to EF verwenden - muss etwas mit dem Unterschied zwischen den beiden sein.

Vielen Dank für das Posten der Problemumgehung, rettete mir viele Stunden von faffing :)