Il metodo di estensione che KendoUI aggiunge (ToDataSourceResult) sembra non funzionare su Pages> Pagina # 1. Funziona bene la prima volta che la pagina viene caricata, ma poi quando provo ad usarlo con lo scrolling virtuale, per recuperare le pagine, 2,3,4 ... N in modo asincrono, il metodo ignora tutti i dati nell'oggetto IEnumerable che sto provando trasformare.ToDataSourceResult Estensione che non popola l'oggetto DataSourceResult
Il mio codice è il seguente:
Ho un controller MVC che recupera i dati in questo modo:
Database database = Database.GenerateDatabase();
ResultSet queryResults = database.GetEvents(
FilterHelper.GenerateQueryCriteria((List<IFilterDescriptor>) request.Filters, request.Page, request.PageSize)
);
Database.GetEvents restituisce un oggetto in questo modo:
public class ResultSet {
public List<ResultSetRow> Set;
public int PageRowCount;
public int TotalRecordCount;
}
Ogni ResultSetRow , è un'istanza di una classe che ha 1 stringa e 2 inte come proprietà.
A questo punto, ho impostato un punto di interruzione e ispezionato il contenuto di ResultSet.Set. Il database sta compilando correttamente l'elenco con tutti i record specificati con request.PageSize. Ho confermato che i risultati vengono restituiti per qualsiasi numero di pagina.
La fase successiva, tutto va male:
DataSourceResult result = ((IEnumerable<ResultSetRow>) queryResults.Set).ToDataSourceResult(request);
ho ispezionare il contenuto dell'oggetto DataSourceResult, e la sua proprietà di matrice 'Dati' è vuoto.
Perché il mio modello (ResultSetRow) non riesce a convertire nell'oggetto DataSourceResult di Kendo?
Alcune informazioni aggiuntive:
- Aggregati, non vengono utilizzati i gruppi, ordinamenti e filtri.
- Il numero di risultati restituiti da Database.GetEvents corrisponde alla dimensione della pagina richiesta.
Grazie per il vostro aiuto SO comunità
Quindi, se dovessi ignorare l'utilizzo di DataSourceResult, potrei fare direttamente un json sul mio oggetto List? –
@JT potresti ... ma Kendo genererà già la query del database corretta per te, quindi dovresti reinventare la ruota. E la versione di Kendo funzionerà quando si attiva il filtro/ordinamento/... –
Ok, in base al tuo feedback ho sviluppato un lavoro in giro: int pagenum = request.PageNum; request.PageNum = 1; DataSourceResult = ...; request.PageNum = pagenum; –