24. januar 2004 - 20:21Der er
9 kommentarer og 1 løsning
Find RadioButtonLists
Hejsa
Jeg har nogle RadioButtonLists i en user control. Jeg vil gerne løbe all RadioButtonList controls igennem og sætte dem der er visible = false til visible = true
Jeg har nemlig en formular til 1 eller 2 personer, som skal udfyldes. Hvis der bliver valgt 2 personer, skal de controls til person 2 også vises.
1) Få fat i en reference til din RadioButtonList (evt. via FindControl, med mindre du har en direkte reference) 2) lave en foreach RadioButton der er i din list, og tjekke deres Visible
det jeg gerne vil er at finde alle radiobuttonlists på siden og løbe dem igennem for at se om de er visible. hvis de ikke er skal de sættes visible = true
kan du vise mig et eksempel? Jeg har prøvet selv, men jeg får en typecast fejl..
uhm.. okay... så du har en del radiobuttonlists på siden du ikke kender id'erne på? I så fald, så bliver du nødt til at gennemløbe alle dine kontroller og tjekke på typen:
foreach (Control c in this.Controls) { if (typeof(c) == typeof(RadioButtonList) { // Vi har fundet en rbl, gør et eller andet med den. } }
nej nej.. du kan ikke sige foreach rbl in Page.Controls... Page.Controls returnere en collection af typen Control, som du så prøver at caste til RadioButtonList, hvilket du jo ikke kan hvis den pågældende control jo er af en anden type... du skal derfor FØRST tjekke typen FØR du caster... det gør du med den kode jeg skrev
i vb.net kan du vist bruge GetType()-metoden istedet for typeof()
Prøv følgende, som skulle sætte Visible = True på de RadioButtonList's som findes på siden. Virker dog kun hvis de ikke er pakket for meget ind....
Dim iCtrl As Integer Dim iForm As Integer Dim iPanel As Integer
Dim oForm As System.Web.UI.HtmlControls.HtmlForm Dim oPanel As System.Web.UI.WebControls.Panel
For iCtrl = 0 To Me.Page.Controls.Count - 1 If TypeOf (Me.Page.Controls(iCtrl)) Is System.Web.UI.HtmlControls.HtmlForm Then oForm = CType(Me.Page.Controls(iCtrl), System.Web.UI.HtmlControls.HtmlForm) For iForm = 0 To oForm.Controls.Count - 1 Select Case oForm.Controls(iForm).GetType.ToString Case "System.Web.UI.WebControls.Panel" oPanel = CType(oForm.Controls(iForm), System.Web.UI.WebControls.Panel) For iPanel = 0 To oPanel.Controls.Count - 1 If TypeOf (oPanel.Controls(iPanel)) Is System.Web.UI.WebControls.RadioButtonList Then oPanel.Controls(iPanel).Visible = True End If Next Case "System.Web.UI.WebControls.RadioButtonList" oForm.Controls(iForm).Visible = True End Select Next End If Next
Er dine kontroller placeret i en PlaceHolder skal denne tilføjes i Select Case'n og løbes igennem på samme måde som Panel'en
Prøv for øvrigt at udskrive typen ved gennemløb af Me.Controls eller Me.Page.Controls....
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.