| 

.NET C# Java Javascript Exception

1
Hi zusammen,
ich möchte, dass beim Paging in einem Gridview Checkboxen wieder markiert werden, falls sie das vorher schonmal waren. Dafür nutze ich das hier erklärte Prinzip.

Das Problem ist nur, dass es nicht funktioniert. Es scheint, als ob mein Code die Checkbox zwar aktualisiert, danach aber erst der Refresh der Seite gemacht wird und damit der Status wieder rausfliegt. Wenn ich dann meinen Code per ButtonClick manuell nochmal ausführe, sind die richtigen Checkboxen markiert...

ich habe auch schon versucht das onPageIndexChanged - Event zu verwenden, hat aber leider auch nichts gebracht.

Hier ist der verwendete Code dafür:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
SetCheckboxes();
}


protected void SetCheckboxes()
{
Dictionary<int, string> _selectedPersons = GetSelectedPromoterDictionary();
CheckBox check;

foreach (GridViewRow row in GridView1.Rows)
{
if (row.DataItemIndex <= GridView1.Rows.Count)
{
int PersonId = Int32.Parse(GridView1.DataKeys[row.DataItemIndex].Value.ToString());

if(__selectedPersons.ContainsKey(Promoterid)==true)
{
check = (CheckBox)row.Cells[1].FindControl("chkSelect");
check.Checked = true;
}
}
}
}


Und wie gesagt, wenn ich SetCheckboxes() über einen Button aufrufe, funktioniert es korrekt.

hat jemand eine Idee?

Danke!
11.12.2011
Sweatdiver 126 1 6
Moin, was steht denn in deinem Page_Load oder Init der Seite? Ist die Seite irgendwo online verfügbar? Ich vermute du setzt die Property Checked zu spät auf true. Ich vermute außerdem das der Button daher funktioniert, weil er die Seite erneut lädt - Und nicht weil er den Code nochmal ausführt. Prüfe bitte mal die Reihenfolge der Codeausführung und bau den Vorhandenen Button zu einem "Page Refresh Button" um der keine weitere Logik ausführt. Wie gesagt ... ich vermute eine falsche Reihenfolge. Grüße
Nicolai Schönberg 11.12.2011
1 Antwort
0
Hallo,

mehrere Ansätze:

A)
1. Datenbindung am GridView vornehmen im Event -> PageIndexChanged
2. Variante 1: SetCheckboxes() aufrufen im GridView-Event "DataBound"
Variante 2: SetCheckboxes() aufrufen im PageEvent "PreRender"

B)
Soll Dein "Promoterid" ein Kennzeichen sein, oder soll es eine Benutzerauswahl sein? Wenn es ein Kennzeichen ist, dann ermittle das Ergebnis so, dass Du eine "Boolean"-Spalte hast wo der das gewünschte Ja/Nein-Wert drin steht, und verwende zur Anzeige eine CheckBox-Column (readonly), dann musst Du die Häkchen nicht selbst setzen.
12.12.2011
SensenMannLE 1,2k 2 9

Stelle deine .net-Frage jetzt!