38 messaggi dal 02 settembre 2004
Ciao a tutti
Mi sono creato una serie di label e textbox dinamicamente:

        while (myRDR.Read() == true)
        {
            Label lblMio = new Label();
            lblMio.ID = "lbl" + myRDR[0].ToString();
            lblMio.Text = myRDR[0].ToString();
            TextBox txtMio = new TextBox();
            txtMio.ID = "txt" + myRDR[0].ToString();
            pnlDati.Controls.Add(lblMio);
            pnlDati.Controls.Add(txtMio);
            lblMio = null;
            txtMio = null;
        }


poi cerco di mettere la proprietà TEXT delle sole textbox in una stringa

        foreach (Control ctl in pnlDati.Controls)
        {
            if (ctl is TextBox)
            {
                vStringa += ((TextBox)(ctl)).Text;
            }
        }



ma l'if non è mai vero; ho controllato in debug il type di ctl ed è literalcontrol.
Come faccio a risolvere il problema?
grazie
mumble, mumble, questo codice è ok.
 foreach (Control ctl in pnlMyPanel.Controls)
                {
                    if (ctl is TextBox) 
                    {
                        ((TextBox)ctl).Text += "pippo";
                    }
                }



vStringa += ((TextBox)(ctl)).Text;


vStringa è string.Empy

Spero di aver capito correttamente.

Ciao,

Fabrizio

Fabrizio Canevali
38 messaggi dal 02 settembre 2004
il problema è che l'if non è mai vero; ho controllato in debug il type di ctl ed è literalcontrol.
Strano, il codice che ho postato funziona correttamente.

Testato in un Panel che contiene vari controlli (label,Validators,textbox, dropdownlist).

Fabrizio

Fabrizio Canevali
38 messaggi dal 02 settembre 2004
prova però a fare il test creando i controlli da codice come ho fatto io.
sul file aspx metti solo il panel, poi inserisci il codice che ho usato io per creare i controlli
pao75 ha scritto:
prova però a fare il test creando i controlli da codice come ho fatto io.
sul file aspx metti solo il panel, poi inserisci il codice che ho usato io per creare i controlli


come presumevo:
Label lblMio = new Label();
        lblMio.ID = "lbl";
        lblMio.Text = "lblText";
        TextBox txtMio = new TextBox();
        txtMio.ID = "txt";
        Panel1.Controls.Add(lblMio);
        Panel1.Controls.Add(txtMio);
        
        foreach (Control ctl in Panel1.Controls)
        {
            if (ctl is TextBox)
            {
                ((TextBox)ctl).Text += "pippo";
            }
        } 


Funziona correttamente.

Fammi sapere.

Fabrizio

Fabrizio Canevali
38 messaggi dal 02 settembre 2004
Adesso funziona
ho trovato il problema; mettevo la routine di creazione dei controlli nel page_load, ma solo se non è postback.
Però il ciclo che andava a vedere i controlli nel pannello era nell'evento di un button.
Il button faceva un postback, il pannello si reinizializzava vuoto, quindi non vedeva solo 2 literalcontrol (che non ho capito cosa siano).

Non è molto che programmo asp.net; mi spiace molto di averti fatto perdere del tempo e grazie 1000 per avermi aiutato a risolvere.

ciao
Paolo
pao75 ha scritto:
Adesso funziona

Non è molto che programmo asp.net; mi spiace molto di averti fatto perdere del tempo e...

ciao
Paolo

Allora c'era il barbattucco

Tutto sui literalControl:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiliteralcontrolclasstopic.asp

grazie 1000 per avermi aiutato a risolvere.

Prego.

Fabrizio Canevali

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.