Il problema di dover paginare i risultati di una query a SQL Server (ma più in generale ad un qualunque DBMS) ricorre spesso, specialmente nelle applicazioni distribuite dove è fondamentale ridurre al minimo la quantità di dati trasportati sul canale.
SQL Server 2005 offre alcuni operatori SQL che permettono di costruire uno "schema" per tradurre una qualunque query nella equivalente versione che restituisce la sola pagina di dati voluta.
Supponiamo ad es. di voler paginare i dati della seguente query (Northwind):
SELECT *
FROM Customers
ORDER BY CustomerID ASC
Isoliamo la clausola ORDER BY dal resto della query ottenendo quindi qualcosa del tipo
SELECT *
FROM (
SELECT...
SharePoint offre il controllo ListView (namespace controllo Microsoft.SharePoint.WebControls) che è possibile utilizzare per renderizzare una qualunque SPList all'interno di una pagina, di una Web Part custom, ... Es:
SPList list = SPContext.Current.Web.Lists["Company documents"];
ListView lv = new ListView();
lv.ListId = list.ID.ToString();
lv.ViewId = list.DefaultView.ID.ToString();
Controls.Add(lv);
Se l'utilizzo di ListView è semplice e intuitivo, è invece meno banale capire qual è il controllo da utilizzare per renderizzare la toolbar della SPList.
Il seguente frammento di codice illustra il funzionamento di ViewToolbar, il controllo che renderizza appunto la toolbar:
SPList list = SPContext.Current.Web.Lists["Company documents"];
ViewToolBar toolbar = new ViewToolBar();
SPContext context = SPContext.GetContext(this.Context, list.DefaultView.ID, list.ID, SPContext.Current.Web);
toolbar.RenderContext = context;
Controls.Add(toolbar);