IndexOutOfRangeException

Jo-Jo

Grünschnabel
Hallo,

ich habe folgendes Problem. Ich lasse bei Laufzeit eine Tabelle erstellen und fülle diese dann mit Labels, Textboxen und einem Buttons (je Eintrag kommt jedes Steuerelement einmal vor).

Der Button dient zum Löschen der Zeile in der Tabelle falls notwendig. Dabei klappt auch folgender Code prima:

Code:
            Button b = (Button)table1.Controls.Find(((Button)sender).Name, true)[0];
            String buttonName = b.Name;
            String subString = buttonName.Substring(3);
            ...........
            table1.Controls.Remove(b);

Nun soll aber später im Code, für jeden noch bestehenden Eintrag in der Tabelle ein INSERT in die DB gemacht werden. Dies habe ich so versucht:
Code:
.....
 for (int i = 0; i <= rows; i++)
            {
                Button b = (Button)table1.Controls.Find(((Button)sender).Name, true)[0];
                String buttonName = b.Name;
                String sub = buttonName.Substring(3);

                String menge = "txt" + sub;
                TextBox tb = (TextBox)table1.Controls.Find(menge, true)[0];

                String label = "lbl" + sub;
                Label lbl = (Label)table1.Controls.Find(label, true)[0];


                _con.Open();
                MySqlCommand cmdX = new MySqlCommand("INSERT INTO tblArtikelBestellungPeCon (BestellNr, ArtikelID, Anzahl, buchen) VALUES (" + id.ToString() + "," + sub.ToString() + "," + tb.Text + ",0);", _con);
                cmdX.ExecuteNonQuery();
                _con.Close();
            }
....

Wenn ich allerdings diesen Code aufrufe, dann kommt schon bei der Suche nach dem Button eine IndexOutOfRangeException. Ich verstehe nicht warum, denn bei meiner ersten Methode klappt es doch auch.

Hat jemand eine Idee oder einen Rat an was es liegen könnte?! Danke!
 
Hi

Hast du schon mal geprüft, ob Controls.Find auch was zurück liefert?
Wenn nicht, erklärt das die Exception.
 
Ich habe nun einfach ein Array erstellt das ich mit Daten fülle und dann hinterher wieder auslese. Damit hat sich das Problem erledigt!
 
Zurück