Announcement

Collapse
No announcement yet.

Pageindexchange bei manuell gefülltem Gridview

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Pageindexchange bei manuell gefülltem Gridview

    Hallo,
    ich habe ein gridview das ich so mit daten fülle
    Code:
                Dim mdbTbl As mdbClass = mdbCon.SqlToTable(SQL, "Suche")
                Dim dt As DataTable = mdbTbl.DataTable
                mdbCon.ConClose()
    
                GridView1.DataSource = dt
                GridView1.DataBind()
    jetzt funktioniert das automatische Pageing des Gridviews nicht und ich muss mich ja selbst drum kümmern

    Code:
        Private Sub GridView1_PageIndexChanging(sender As Object, e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
            GridView1.PageIndex = e.NewPageIndex
            GridView1.DataBind()
        End Sub
    Leider funktioniert das nicht da in diesem moment scheinbar das Gridview die Datasource verloren hat.

    baue ich test weise diese Zeile oben ein
    "GridView1.PageIndex = GridView1.PageIndex +1"

    wird nach jedem klick auf den Suchbutton die nächste Seite angezeigt.

    Code:
                Dim mdbTbl As mdbClass = mdbCon.SqlToTable(SQL, "Suche")
                Dim dt As DataTable = mdbTbl.DataTable
                mdbCon.ConClose()
    
                GridView1.DataSource = dt
                GridView1.PageIndex = GridView1.PageIndex +1 
                GridView1.DataBind()
    Das sagt mir ja das ich irgendwie die Datatable im PageIndexChanging Ereignis setzen muss.
    Aber wie ?
    ich kann doch nicht nocheinmal mir erst die SQL zusammenbauen und und und
    das muss doch einfacher gehen ?

  • #2
    An der Stelle würde ich aber aufpassen dass er Dir dann nicht komplett alle Daten in den ViewState packt. Ansonsten gehts halt komplett manuell den PageIndex an die SQL Abfrage übergeben...

    Comment


    • #3
      versteh ich nicht mit dem viewstate?

      und wie meinst du das mit pageindex an die SQL übergeben
      select top 20 oder sowas ?

      Comment


      • #4
        @ViewState: Es kann vorkommen dass ASP.NET sich einfach alle Items in der BindingSource merkt und diese dann in den View serialisiert.

        @Top20: Ja genau. Man müsste einfach dazu ein entsprechendes SQL Skript basteln, was einem zum aktuellen PageIndex die gewünschten Ergebnisse liefert. Ansonsten müsste Deine BindingSource ja Paging unterstützen. Da kenn ich mich aber leider auch nicht tiefer aus. Selten direkt WebForms benutzt

        Comment


        • #5
          ok danke dür die Aufklärung :-)

          aber ich kann mir irgendwie nicht vorstellen das ich mir das so basteln muss, das muss doch irgend ne einstellung oder sonstwas geben das das funktioniert

          Comment


          • #6
            Schau mal hier:

            http://www.c-sharpcorner.com/UploadFile/9aea29/4111/

            2 Minuten auf google

            Comment


            • #7
              Aber wenn ich das richtig verstehe ist das doch genau das was ich vermeiden wollte.
              Da meine SQL nicht einfach "select data from table" sondern extrem komplex zusammengebaut wird und von hier und da Daten brauch die dann ausgewertet werden für die SQL.

              Ist es bei .net echt Sinn der Übung ne SQL die vielleicht 3-5 Sekunden läd bei jedem PageChange wieder laden zu lassen?

              Comment


              • #8
                Aus Sicht einer Webanwendung kann das durchaus Sinn machen. Warum sollte der Server Daten vorhalten, wenn er gar nicht weiss ob denn der Benutzer die Daten überhaupt nochmal braucht. Du kannst Dir das Ergebnis Deines Queries in der Session merken, hier musst Du allerdings auf den Speicherverbrauch achten bzw. einen SQL Server Session Server aufsetzen.

                Das ist allerdings kein spezifisches .NET Problem, sondern einfach die Eigenschaft des Webs zustandslos zu sein Du wirst in jeder anderen Programmiersprache/Umgebung dieselben Probleme haben.
                Entweder ich hole mir jedesmal die Daten frisch aus der DB (rechenintensiv) oder ich merke sie mir im Speicher (speicherintensiv)

                Comment


                • #9
                  achso ok

                  also macht das Gridview an sich auch nichts anderes wenn ich es Fest bzw. automatisch in der Programmierumgebung mit einer Tabelle verknüpfe ?

                  Comment

                  Working...
                  X