Avatar billede excession Nybegynder
24. januar 2004 - 20:21 Der 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.

Er der en der kan hjælpe mig med det?

-- xs
Avatar billede burningice Nybegynder
24. januar 2004 - 22:02 #1
hvad er din erfaring med .Net ? Kender du FindControl-metoden og foreach ?
Avatar billede excession Nybegynder
24. januar 2004 - 22:09 #2
ja jeg har en smule erfaring med .NET

yep. kender de 2

jeg koder i øvrigt i VB, men hvis du hellere vil C# er det ok.  kan godt læse og forstå C#
Avatar billede burningice Nybegynder
24. januar 2004 - 22:17 #3
så er det vel bare at

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
Avatar billede excession Nybegynder
24. januar 2004 - 22:43 #4
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..
Avatar billede burningice Nybegynder
24. januar 2004 - 22:58 #5
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.
  }
}
Avatar billede excession Nybegynder
24. januar 2004 - 22:59 #6
System.InvalidCastException: Specified cast is not valid.

Det er det jeg har lavet. kan godt se at det ikke er rigtigt, men jeg har søgt efter en løsning, men kan ikke finde det.:

        Session("ShowPerson2") = True
        If Session("ShowPerson2") = True Then
            showP2 = True

            Dim rbl As RadioButtonList

            For Each rbl In Page.Controls
                If rbl.Visible = False Then
                    rbl.Visible = True
                End If
            Next

        End If
Avatar billede burningice Nybegynder
24. januar 2004 - 23:09 #7
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()
Avatar billede excession Nybegynder
24. januar 2004 - 23:23 #8
hmm kan stadig ikke få det til at virke..

der sker ikke rigtig noget faktisk..

koden:

                Dim myControl As Control
                For Each myControl In Me.Controls
                    If myControl Is GetType(RadioButtonList) Then
                        myControl.Visible = True
                    End If
                Next
Avatar billede burningice Nybegynder
13. februar 2004 - 15:12 #9
hermm.. underligt.. det skal virke...

kan du skal teste direkte på klassen, og ikke typen

                Dim myControl As Control
                For Each myControl In Me.Controls
                    If myControl Is RadioButtonList Then
                        myControl.Visible = True
                    End If
                Next
Avatar billede thrytter Nybegynder
15. februar 2004 - 17:36 #10
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....
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester