Cercapersone e griglie di selezione con ASP.Net MVC
-
20-08-2019 - |
Domanda
Sono nuovo di MVC, e non sto seguendo come si farebbe di paging e l'ordinamento su una griglia. Sono abituato a utilizzare il controllo GridView asp.Net con un ObjectDataSource puntato verso oggetti nel nostro livello di business - e in tal caso l'ODS gestisce tutto il paging e l'ordinamento utilizzando i metodi che il nostro ORM genera sugli oggetti
Ho guardato con la stessa ORM con MVC - e le cose funzionano bene lì - ho appena ciclo attraverso le collezioni per la costruzione della tabella della pagina - ma senza i ODS per gestire la paginazione e l'ordinamento, io sono confuso su come avrei gestire questo. Avrei un controller separato per la paginazione e l'ordinamento?
ho capito che ho bisogno di rotolare il mio - ma da dove si comincia? Ho creato un CustomerController, e una vista che visualizza una tabella di clienti che si presenta come di seguito - e voglio ordinare le colonne FirstName o LastName. Il mio modello ha un metodo sort () su di esso che prendo un'espressione stringa sorta nel formato che sarebbe stato utilizzato da una coppia GridView / ODS. Dovrei creare una nuova azione sul mio CustomerController chiamato Ordina, e porre ActionLink nel mio header?
<table>
<tr>
<th>
First Name
</th>
<th>
Last Name
</th>
</tr>
<% foreach (var item in Model)
{ %>
<tr>
<td>
<%= Html.Encode(item.FirstName) %>
</td>
<td>
<%= Html.Encode(item.LastName) %>
</td>
</tr>
<% } %>
</table>
Soluzione
Il tuo grado di utilizzare lo stesso controller, basta aggiungere un ulteriore parametro e denominarlo sorta. Poi il check-in del controller quale valore tipo ha, e ordinare i dati in base a tale parametro.
In alternativa, se si vuole fare le cose sul lato client, è possibile utilizzare qualcosa come tablesorter , un plugin per jquery.
Altri suggerimenti
al giorno d'oggi MVC 3 ha ora una WebGrid fuori dalla scatola. So che questa domanda è da qualche tempo fa, ma ho finito su di esso quando alla ricerca di qualcosa su WebGrid. Così ho pensato che dovrebbe avere una risposta menzionare la nuova WebGrid.
Ecco alcuni buoni messaggi su come usarlo:
http://www.dotnetcurry.com/ShowArticle.aspx?ID=615
http://www.nickharris.net/tag/webgrid/
Supporta l'ordinamento, il paging e anche alcune cose Ajax. Si può fare molto per voi già, ma è anche possibile specificare ogni colonna separata separatamente.
Aggiornamento:
Ci sono anche molte librerie JavaScript disponibili che possono fare il tavolo per voi. Personalmente mi piace usare DataTable . È possibile alimentarlo una tabella HTML esistente generato sul server o dargli un endpoint dove può recuperare i dati (tutti o solo una pagina).
Ci sono un sacco di più, solo Google in giro.
Con MVC si ordina di avere a rotolare il proprio ordinamento, il paging, ecc vorrei suggerire YUI DataTable o alcune delle altre reti JavaScript là fuori.
Anche se trovate la vostra auto facendo pesante lavoro di griglia di dati si consiglia di dare un'occhiata a ASP.NET Dynamic Data, è specificamente progettato per questi tipi di interazioni contro ORM.
Il primo utilizzo jQuery . jQuery è tuo amico. Quindi utilizzare questo fantastico e probabilmente il migliore controllo griglia per jQuery jqGrid .
Nel vostro CustomerController creare un'azione denominata CustomerData. Tutte le interazioni con la rete deve puntare a questa azione.
qui per le tonnellate di esempi su come utilizzare jqGrid.