ASP.NET – Checkbox im Gridview

31 07 2007

Ich stand heute vor dem Problem, dass ich eine Checkbox innerhalb eines Griedviews brauchte. Die viel mir ein, das ich einen Vodcast dazu gesehen habe.

Ganz konnte ich es nicht anwenden, zum Einen nutze ich C# und zum anderen hab ich meinen Gridview innerhalb eines Ajax-UpdatePanels – somit soll nicht nur erfasst werden, welche Checkboxen irgendwann mal angeklickt wurden, sondern ich will nur den wirklichen aktuellen Status.

Ich bin mir sicher, meine Anpassungen sind nicht perfekt, ich beschäftige mich aber noch nicht all zu lang mit C#, deshalb bitte ich um Nachsicht. Verbesserungsvorschläge nehme ich aber gerne an!

Der Typ „HybridDictionary“ ist nicht in „System.Collections“ zu finden sondern in „System.Collections.Specialized“.

using System.Collections.Specialized;

Nun noch meine Funktion die Aufgerufen wird, wenn der Wert einer Checkbox sich ändert.

Achtung! Meine Variablen habe ich nicht so genannt wie die Variablen im Vodcast. Ich hoffe, dank der Kommentare, ist es trotzdem verständlich.

protected void chkSaveJob_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox chkGvSaveJob = ((CheckBox)sender);                             // Aktuelle Checkbox
        GridViewRow selGvRow = ((GridViewRow)chkGvSaveJob.NamingContainer);     // Selektierte Reihe des Gridvies
        if (Session["selIndexes"] == null)                                      // Sessionvariable "selIndexes" nicht gesetzt?
        {
            HybridDictionary dictChk=new HybridDictionary();                    // neues HybridDictionary
            if (chkGvSaveJob.Checked)                                           // Checkbox angehakt?
                dictChk[selGvRow.Cells[0].Text] = selGvRow.Cells[0].Text;       // wenn ja dann ID speichern
            else
                if (dictChk[selGvRow.Cells[0].Text] != "")
                    dictChk.Remove(selGvRow.Cells[0].Text);                     // wenn nein, Eintrag entfernen
            Session["selIndexes"]=dictChk;                                      //  Sessionvariable wieder befüllen
        }
        else                                                                    // Sessionvariable "selIndexes" gesetzt
        {
            HybridDictionary dictChk=((HybridDictionary)Session["selIndexes"]); // HybridDictionary aus Session auslesen
            if (chkGvSaveJob.Checked)                                           // restliche Bearbeitung analog zum oberen Teil
                dictChk[selGvRow.Cells[0].Text] = selGvRow.Cells[0].Text;
            else
                if (dictChk[selGvRow.Cells[0].Text] != "")
                    dictChk.Remove(selGvRow.Cells[0].Text);

            Session.Add("selIndexes",dictChk);
        }
    }
Advertisements

Aktionen

Information

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s




%d Bloggern gefällt das: