3 messaggi dal 04 dicembre 2011
Ciao a tutti,
ho deciso di registrarmi e chiedere a voi, perchè non so più dove battere la testa.

Ho creato un web user control così (mi perdonerete se la soluzione è rozza, ma non sono uno sviluppatore esperto proprio per niente):

<div>
    <asp:CheckBox ID="wuc_cb_selection" runat="server" /><asp:Label ID="wuc_label_name" runat="server"></asp:Label>
    <br />
    <asp:HyperLink ID="wuc_hyperlink" runat="server"></asp:HyperLink>
    <br />
    <asp:Label ID="wuc_label_note" runat="server"></asp:Label>
</div>


Ora devo utilizzarlo in modo programmatico, perchè deve essere ripetuto tante volte quanti sono gli elementi che mi ritorna un recordset. Per aggiungerlo alla pagina ho posizionato un placeholder e poi, da codice:

            Dim wuc_moduleCustomCheckbox As Control = LoadControl("../controls/moduleCustomCheckbox.ascx")

            Dim ucType As Type = wuc_moduleCustomCheckbox.GetType()

            Dim ucPageHeadingProperty As PropertyInfo
            wuc_moduleCustomCheckbox.ID = ds.Tables("modulesList").Rows(i)("IDMODULE")

            ucPageHeadingProperty = ucType.GetProperty("cb_selection_checked")
            ucPageHeadingProperty.SetValue(wuc_moduleCustomCheckbox, False, Nothing)

            ucPageHeadingProperty = ucType.GetProperty("cb_selection_enabled")
            ucPageHeadingProperty.SetValue(wuc_moduleCustomCheckbox, False, Nothing)

            ucPageHeadingProperty = ucType.GetProperty("lb_name")
            ucPageHeadingProperty.SetValue(wuc_moduleCustomCheckbox, ds.Tables("modulesList").Rows(i)("NAME"), Nothing)

            ucPageHeadingProperty = ucType.GetProperty("lb_note")
            ucPageHeadingProperty.SetValue(wuc_moduleCustomCheckbox, "note del modulo", Nothing)

            ucPageHeadingProperty = ucType.GetProperty("lb_link")
            ucPageHeadingProperty.SetValue(wuc_moduleCustomCheckbox, "http://www.google.com", Nothing)

            ph_CheckboxModulesList.Controls.Add(wuc_moduleCustomCheckbox)


E sostanzialmente funziona.
Ora, io devo in fase di postback snocciolarmi tutti gli n control che ho creato programmaticamente per vedere se cb_selection_checked è selezionata, ed eventualmente eseguire del codice.
Non ho idea di come farlo.
Ciao. Ammesso che nel tuo placeholder tu abbia solo ed esclusivamente istanze del tuo user control potresti ciclare all'interno dei Children del placeholder, per grandi linee una cosa del genere:

For Each Control c in ph_CheckboxModulesList.Children 
Dim checkBox As CheckBox = CType(c.FindControl("wuc_cb_selection"), CheckBox)
If  checkBox.Checked Then DoSomething()
End For Each


P.S.: Ricordati che quando utilizzi uno user control per leggere dati in fase di postback, non istanziare lo user control all'interno di una if (!Page.IsPostBack)

Gianluca
http://www.gianlucaesposito.it
3 messaggi dal 04 dicembre 2011
mi sei stato utile, proverò subito questo approccio.. vediamo che salta fuori ;)
tnx!
3 messaggi dal 04 dicembre 2011
l'ho risolta così:

        
For Each c As Control In ph_CheckboxModulesList.Controls

            Dim checkBox As CheckBox = CType(c.FindControl("wuc_cb_selection"), CheckBox)

            If checkBox.Checked Then
                'do something
            Else
                'do something else
            End If

        Next
Dimentico sempre che i "Children" in asp.net si chiamano "Controls"!

Gianluca
http://www.gianlucaesposito.it

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.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC