Datagrid Paging

jma

Mitglied
hallo
ich hab da mal ein paar fragen zu nem Datagrid in einer Webanwendung.
das ganze ist in c# und codebehind eingebettet.

Das DataGrid baue ich manuell auf. Spalten erstelle ich mit DataColumn, Daten füge ich zeilenweise mit DataRow hinzu.

Nun hab ich die Pagingfunktion für 5 Zeilen pro GridSeite aktviert
als Event wird folgender Code ausgeführt:
Code:
private void DataGrid2_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
		{
			DataGrid2.CurrentPageIndex = e.NewPageIndex;
			DataGrid2.DataBind();
		}
leider funktioniert das umblättern nicht. Klicke ich auf den Paging-Button weiter oder zurück, bzw. auf die seiten zahl wird das Datagrid ausgeblendet, als ob keine weiteren zeilen enthalten sind. Die Zeilen z.b 6 bis xx werden erst dann angezeigt, wenn ich eine neue Zeile hinzugefügt habe. Genauso wenn ich zurückblättere.
EnableViewState ist aktiviert.

Zu den weiteren Fragen komme ich später, hab grad noch entsprechende links gefunden.
Wär schonmal nett wenn mir zur ersten frage jemand weiterhelfen könnte.

Besten Dank
jma
 
Hoi du,
Ich hab mach dir schnell n Beispiel, wenn du dein Datagrid füllst, zb von einem SQL-Server.

Also folgendes:
C#:
private void DataGrid1_PageIndexChanged (...)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
//Nun rufst du hier deine Füllmethode auf, da bei Webaplikationen die Daten ja verloren gehen
FillDataGrid();

}

Das sollte reichen, nun musst du in deiner Füllmethode folgende Dinge berücksichtigen:

C#:
private void FillDataGrid()
{
//Zum einen muss hier die Grösse stehen in deinem Falle 5
DataGrid1.VirtualItemCount = 5;

//Nun der Wichtige schritt, bei dem Füllen deines Datagrids, musst du sagen, auf welcher Page du dich befindest. Das sollte imho in dem Stiel aussehen
sqla = new SqlDataAdapter(deinSqlString,connection) ;
sqla.Fill(ds,DataGrid1.CurrentPageIndex*DataGrid1.PageSize,((DataGrid1.CurrentPageIndex+1)*DataGrid1.PageSize),"Name_für_deine_Tabelle");
}

So, wenn du diese Dinge berücksichtigs, sollte dein Paging funktionieren.

Greetz
ziop

**edit**

Eine Abfrage, auf welcher Page du dich befindest, für den Fall, dass du bei Page 5 bist und auf 4 Willst, und dort die richtigen Daten sein sollen, müsste auch noch rein, aber versuch erst mal, ob du das Paging so hinbekommst
 
Zuletzt bearbeitet:
danke erstmal,
werd das gleich mal ausprobieren.

mein 2tes problem ist nämlich folgendes, hab ne Spalte zum editieren der zeile eingebaut, jedoch muss ich zweimal auf den Linkbutton klicken, bevor die Zeile in eine Editierbarezeile umgewandelt wird.

HTML:
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel" EditText="Edit"></asp:EditCommandColumn>
</Columns>
und
Code:
private void DataGrid2_EditCommand(object source, DataGridCommandEventArgs e)
{
DataGrid2.EditItemIndex = e.Item.ItemIndex;
}

jma
 
ok, also gleicher Effekt wie zuvor

also in allen beispielen die ich gesehen habe, reicht der zweizeiler um auf die nächste Seite zu springen, die daten stehen ja auch im dataset, welches global abliegt. Also glaube ich ich mal nicht das DIESE Daten verloren gehen. Zumal ja beim nächsten einfügen die Daten entsprechend der Page korrekt angezeigt wurden.

Mir scheinst einfach nur an der aktualisierung des Grids zu liegen, das ich dort irgendeinen Haken bei true / false vergessen habe.
 

Neue Beiträge

Zurück