Paging av data fra SQL på 30 sekunder med SqlDataSource og DataGrid

Dette eksempelet viser hvordan du fort kan sette opp paging mot en SQL Server med SqlDataSource og DataGrid. Det tar bare noen sekunder å sette opp og fungerer utmerket.

Paging kan gjøres på mange måter. I denne artikkelen viser vi den kanskje aller enkleste måten med standardkontroller i ASP.NET. Her bruker vi kun ASP:SqlDataSource og ASP:DataGrid og et par linjer kode. Det er ikke mer som skal til for å presentere data side for side.

ASP:SqlDataSource kontrollen trenger bare et par attributter for å koble seg til en database. Den trenger en ConnectionString og en SelectCommand og dermed er den klar. I dette eksempelet angir vi navnet på vår ConnectionString fra web.config, men den kan selvfølgelig skrives inn manuelt eller hentes fra en variabel. En datagrid trenger kun å vite hvor den skal hente data fra og det er jo fra vår SqlDataSource kontroll. I tillegg setter vi opp AllowPaging=true og PageSize=5. Helt til slutt må vi angi hvilken metode som skal sørge for at vi bytter ut dataene hver gang noen klikker på paging-navigasjonen. Event’en OnPageIndexChanged kjører hver gang noen vil bla i dataene og vi kobler derfor den event’en til en metode.

<asp:SqlDataSource 
    runat="server" 
    ID="ds" 
    ConnectionString="<%$ ConnectionStrings:ConnString %>" 
    SelectCommand="SELECT * FROM Users" />

<asp:DataGrid 
    runat="server" 
    ID="dtgData" 
    DataSourceID="ds" 
    AllowPaging="true" 
    PageSize="5" 
    OnPageIndexChanged="dtgData_PageIndexChanged" />

Så metoden med 2 linjer kode som sørger for at riktig data presenteres når man blar i data.

protected void dtgData_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
    dtgData.CurrentPageIndex = e.NewPageIndex;
    dtgData.DataBind();
}

Et komplett eksempel med hele koden i en aspx fil kan lastes ned her

Hvorfor ikke?

Dette er en veldig enkel måte å gjøre det på og det tar bare et par minutter å sette det opp. Men det er for lett til å være sant, hvertfall for lett til å være skikkelig bra. Denne måten er glimrende for backend systemer eller andre deler av en løsning som normalt ikke har mye trafikk. Man bør også velge en annen måte dersom det er mye data som skal vises. Grunnen til det er at denne metoden henter ut mye mer data enn man faktisk skal vise og overflødig data blir lagret i viewstate. Det medfører at det tar litt båndbredde og ikke minst at ytelsen faller som et lodd.

Konklusjon

Dersom du skal lage et admin-grensesnitt eller en annen del av løsningen med lite trafikk så er dette ok, med mindre det er MYE data i databasen. Skal du presentere data fra en database med mange rader eller vise data på en side med mye trafikk, så bør du heller ta en kikke på artikkelen Paging i SQL med stored procedure. Men altså: til sitt bruk er den helt fin…