Dynamische Steuerelemente zählen


Marius89

Grünschnabel
Ich möchte eine Dynamische Anzahl von Textboxen zählen (eigentlich möchte ich sie auswerten, aber der einfachheit halber zeig ich mal mein Codebeispiel mit zählen)

Code:
public partial class _Default : System.Web.UI.Page
{
    //dynamische Steuerelemente
    protected System.Web.UI.WebControls.TextBox dyn_TextBox;
     
    protected void Button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < 4; i++)
        {
            dyn_TextBox = new TextBox();
            dyn_TextBox.Text = i.ToString();
            dyn_TextBox.ID = "tb" + i.ToString();
            this.Panel1.Controls.Add(dyn_TextBox);
        }
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        int counter = 0;

        foreach (Control control in this.Panel1.Controls)
        {
            if (control is TextBox)
            {
                counter++;//zählt die Anzahl der Textboxen
            }
        }

        this.TextBox1.Text = counter.ToString();
    }
}



Wenn man auf Button1 klickt, werden 4 Textboxen einem Panel hinzugefügt. Das funktioniert auch einwandfrei.
Wenn man dann auf einen 2. Button klickt soll die Anzahl der Textboxen ausgegeben werden. Das funktioniert aber nicht...
Mir geht es jetzt nicht darum, nur die Anzahl der Textboxen zu wissen (klar, da könnt ich auch schon beim erstellen einfach mitzählen und in ner globalen Variablen speichern...).
Vielmehr möcht ich wissen, wie ich auf das Panel zugreifen kann, aus einer anderen Methode heraus.
Wenn man den Code von Button1_Click() nimmt und ins PageLoad schreibt, funktioniert das ganze nämlich.

Das muss irgendwas elementares sein, sry deswegen, aber bin eben noch nicht so lang dabei...
 

Norbert Eder

Erfahrenes Mitglied
Öhm, wie jetzt? Du willst alle Textboxen zählen, die es in Panel1 gibt? Da sollte dein Button2_Click eigentlich so funktionieren ...
 

M4st3r

Erfahrenes Mitglied
Ich bezweifele das das so funktionieren wird.

Du fügst die Textboxen mit Klick auf Button 1 hinzu. Dann machst du einen postback mit dem klick auf Button 2. Das Page_Load Event wird ausgelöst und es gibt keine Textboxen mehr - und erst jetzt wird der ClickEvent ausgelöst... Du musst zusehen das deine Textboxen bei initialisieren der Seite nicht verloren gehen. Ich stand vor dem gleichen "Phänomen", hab aber leider meine Lösung nicht zur Hand. Du könntest dir in einer ControlCollection die Controls merken die du dem Panel hinzugefügt hast und diese beim laden der Seite hinzufügen. Die Werte die da drin standen bekommst du aus dem Request-Objekt.

Viel Erfolg

...und wenn ich die Lösung finde, dann stelle ich Sie gerne hier rein
 

Marius89

Grünschnabel
Ah ok, das leuchtet irgendwie ein.

Also in Wirklichkeit, soll eine dynamische Anzahl von Textboxen erstellt werden, in welche dann verschiedene Werte eingetragen werden und diese per click (Button2) dann in ein XML File gespeichert werden. Nur sagte mir das immer, dass keine Textboxen existieren. Das Beispiel mit den "zählen" hab ich nur genommen, um das Problem zu demonstrieren.
Dann werd ich mal mit dem ControlCollection und requestobject weiter experimentieren...

Falls die Lösung findest, wäre es echt super, wenn die posten könntest.

Aber auf jeden Fall mal vielen Dank!
 

Forum-Statistiken

Themen
272.355
Beiträge
1.558.613
Mitglieder
187.829
Neuestes Mitglied
AlDi31