20. februar 2006 - 15:16Der er
29 kommentarer og 1 løsning
Rigtig brug af paging i .net 2.0 gridview
Jeg bruger et .net 2.0 gridview. Den har eventen PageIndexChanging. Det virker udmærket, men jeg gemmer i øjeblikket min collection i en Sessionsvariabel, for at den skal kunne huske det. Er det den rigtige måde at gøre det på.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Slettet bruger
20. februar 2006 - 15:34#1
Du behøver ikke benytte en session variabel. Sæt EnableViewState til true og den husker alle værdierne fra din liste mellem hvert postback.
normalt behøver du ikke at bruge noget i denne stil du benytter hvis dit gridview er bundet til en datasource og ikke bliver bundet igen ved postback så burde den selv skifte page. Et index starter altid på 0. så når du får side 1 vist er pageindex 0.
SqlDataReader drGetData = cmdGetData.ExecuteReader(); Tilbudscollection coltilbud = new Tilbudscollection();
while (drGetData.Read()) { coltilbud.Add(new Tilbud(int.Parse(drGetData["tilbudid"].ToString()))); }
if (drGetData.HasRows == false) { info.InnerHtml = "Der var desværre ingen tilbud. Prøv evt. med flere butikker eller en anden dato :-) <br><br>Med venlig hilsen<br><br>Tilbudsavisen"; }
På denne måde kan du binde data i dit grid når siden loades og derefter beholdes data i ViewState ved hvert postback.
Men igen, hvis du ikke SKAL gøre noget specifikt med dine data behøver du slet ikke at lave det du skriver i dit første indlæg. Du kan jo gøre stort set alt direkte via gridviews metoder, altså slette, oprette og opdatere rækker fra databasen.
Synes godt om
Slettet bruger
21. februar 2006 - 15:41#20
P.S. Hvis sletter en event fra din codebehind fil skal du huske at slette den fra din .aspx sides source også. Dette gøres ikke automatisk, så det bevirker at selve gridview indeholder en event, men at denne ikke findes i codebehin-filen.
den fejl du får kommer på grund af den måde at data bliver bundet på. Den ville ikke komme med en sqldatasource f.eks. så du skal bruge: protected void gwMain_PageIndexChanging(object sender, GridViewPageEventArgs e) { gwMain.PageIndex = e.NewPageIndex; gwMain.DataBind();
}
Ved ikke om det er nødvendigt med sessionen. men hvis der ikke sker noget skal du bruge den.
hvis du havde brugt sqldatasource var det ikke den rigtige metode. Men når du ikke gør det så er det den rigtige metode. Havde bare noget uvidenhed eller manglende viden på området. Som gjorde at jeg ikke kunne give dig bedre rådgivning. Tror bare at du selv skal svarer og accepterer dit svar.
Synes godt om
Slettet bruger
21. februar 2006 - 20:56#26
Databindingen er fin nok, men forstår bare stadig ikke hvorfor du vil optage hukommelse med en session-variabel.
Hvis du binder din collection første gang siden loades burde det ikke være noget problem med postbacks. Givet at du benytter ViewState=true.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.