Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Controls dynamisch im Codebehind erstellen
Savage
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

Controls dynamisch im Codebehind erstellen

beantworten | zitieren | melden

Hi Leute,

ich erstelle Checkboxen im Code-Behind auf dieser Art:

CheckBox cb = new CheckBox();                
cb.Text = r.Rolename;
cb.ID = "role_" + r.ID;
cb.EnableViewState = true;                
myplaceholder.Controls.Add(cb);    

Nach dem Postback kann ich das Control aber nicht mehr ansprechen:
myplaceholder.Controls.count liefert immer 0

Was mache ich falsch? Oder sehe ich den Wald vor lauter Bäume nicht mehr?
private Nachricht | Beiträge des Benutzers
schaedld
myCSharp.de - Member

Avatar #avatar-2533.jpg


Dabei seit:
Beiträge: 1436
Herkunft: Schweiz

beantworten | zitieren | melden

Tritt der Postback beim Selektieren einer Checkbox ein? Wenn ja solltest Du die Autopostback Eigenschaft auf false setzen. Ich denke mal dass nachdem selektieren und bei einem Postback die Controls nicht noch einmal generiert werden sodass MyContainer.Controls auch keine Controls enthält.


        protected void Page_Load(object sender, EventArgs e) {
            addControls();
        }

        private void addControls() {
            for(int i = 0; i < 10; i++) {
                CheckBox chKBox = new CheckBox();
                chKBox.ID = string.Format("CheckBox_{0}", i.ToString());
                chKBox.Text = "Role name";
                chKBox.AutoPostBack = false;
                this.form1.Controls.Add(chKBox);
            }
        }
Wenn Du dann die entsprechenden Checkboxen seletiert hast und deren Zustand, beispielsweise bei einem Button-Click Ereignis abfragen willst, dann kannst Du nur die Controls-Collection durchiterieren und abfragen ob das Control typeof(CheckBox) ist und dann den Zustand derer erfragen, oder mit JavaScript.
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

Genauer gesagt:

bei jedem PostBack wird ein neues Objekt der Klasse der Webseite erzeugt, das nichts vom vorherigen weiß. Dann werden wieder alle Methoden durchlaufen, alle Controls erzeugt und so weiter. Es ist sehr gut möglich, dass in deiner Abfrage des Controls nach dem PostBack das Control noch gar nicht erzeugt wurde.

ASP.NET Page Life Cycle

Prüf mal, ob die Reihenfolge bei dir so, wie sie ist, korrekt ist.

LaTino
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von LaTino am .
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers
Savage
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

beantworten | zitieren | melden

Dank euch beiden, euer Anstoß hat mich drauf gebracht!
Ich hab tatsächlich den Wald vor lauter Bäume nicht mehr gesehen.
Die Erzeugung der Checkboxen war in einer if(!IsPostBack) Abfrage… 50mal drübergelesen, nicht gesehen. *peinlich*

Thx
private Nachricht | Beiträge des Benutzers