Laden...

RadioButtons durchlaufen mit foreach

Erstellt von w1z4rd2003 vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.331 Views
w1z4rd2003 Themenstarter:in
624 Beiträge seit 2006
vor 14 Jahren
RadioButtons durchlaufen mit foreach

hallo,

ich möchte meine 4 radiobuttons durchlaufen lassen um überprüfen welcher aktiviert muss.

das ist der code der alle vier durchlaufen müsste.

                foreach (RadioButton rb in _panPanel1.Controls)
                {

                    if (rb.ID == type)
                    {
                        rb.Checked = true;
                    }
                }

die RadioButtons sehen so aus

                
                _rdo = new RadioButton();
                _rdo.ID = "RB1";
                _rdo.GroupName = "Group1";
                _rdo.Text = "RadioButton1"
                this.Controls.Add(_rdo);
                this.Controls.Add(new HtmlBRControl());

das ist die fehlermeldung. es liegt am HtmlBRControl. kann man nicht vier solche radiobuttons unterhalb anordnen und diese dann mit dem obigen code durchlaufen?

  •   ((System.SystemException)(ex))	{"Unable to cast object of type 'Swisscom.It.SwisscomIntranet.UI.HtmlControls.HtmlBRControl' to type 'System.Web.UI.WebControls.RadioButton'."}	System.SystemException {System.InvalidCastException}
    
3.003 Beiträge seit 2006
vor 14 Jahren

_panPanel1 enthält außer deinen RadioButtons offenbar noch andere Controls. Daher kann dein foreach so nicht funktionieren.

Bitte ein wenig mit den Grundlagen beschäftigen.

LaTino

"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)

R
234 Beiträge seit 2007
vor 14 Jahren

Du musst einfach prüfen ob es sich bei dem Control auch wirklich um einen RadioButton handelt. Ansonsten kommt es zu der genannten Fehlermeldung.


foreach(Control c in _panPanel1.Controls)
{
    RadioButton rb = c as RadioButton;
    if(rb != null) {
        rb.Checked = true;
    }
}

/Edit: Siehe auch: [Tipp] Casten aber richtig: Begriffe wie Cast / is / as

5.941 Beiträge seit 2005
vor 14 Jahren

Hallo zusammen

Es ist zwar schon fast alles gesagt, aber eines...
Man kann die Collection schon durchlaufen, aber nur auf den Typen der von allen Objekten darin unterstützt wird.
Das wäre in diesem Falle evt. WebControl aber zumindest Control.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

1.433 Beiträge seit 2006
vor 14 Jahren
foreach(Control c in _panPanel1.Controls)
{
    if(c.GetType().Equals(typeof(Radiobutton)){
            RadioButton rb = c as RadioButton;
    if(rb != null) {
        rb.Checked = true;
    }
    }
}

Würd ich jetzt machen.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

1.820 Beiträge seit 2005
vor 14 Jahren

Hallo!

@schaedld:
Dein Code würde einen Compiler-Fehler erzeugen, da eine Variablen-Deklaration nicht in einem if-else-Zweig stehen darf.
EDIT: Sorry, meine Aussage ist falsch, hab' die geschweiften Klammern übersehen, ich mag' diese Java-Syntax nicht 🙁

Die Variante von Rastalt ist schon ausreichend.

Nobody is perfect. I'm sad, i'm not nobody 🙁