如何在子集容器中找到已检查的单选按钮?

时间:2012-02-15 22:53:13

标签: c# asp.net

我有一个单选按钮列表,而不是radiobuttonlist,我需要找出哪一个被检查。容器是在已知的wizardstep内的div。由于只知道wizardstep id,如何在div下找到单选按钮? 结构是这样的:

<asp:WizardStep runat="server" ID="TypeStep" StepType="Step" Title="Business Type">
   <div id="A" runat="server">
      <asp:radiobutton .....

   </div>
   <div id="B" runat="server>
      <asp:radiobutton .....

   </div>
    ...
</asp:WizardStep>

我的代码如下:

foreach (RadioButton rb in TypeStep.Controls.OfType<RadioButton>()){
  ...
}

但它找不到任何单选按钮,除非我将TypeStep更改为“A”div,但在我的代码中,哪个div不知道。我只能使用TypeStep来搜索已检查的radiobutton。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

So Controls Property仅返回一级子控件。我建议你克里特一个扩展,递归搜索控件。我建议你也传递最大深度。这将是更通用的方式。但是,在您的示例中,您需要另一个嵌套for循环。代码在这里:

foreach (Control c in TypeStep.Controls)
{
    foreach (RadioButton rb in c.Controls.OfType<RadioButton>())
    { 
          ... 
    }     
}

这将搜索另一个级别。如前所述,Controls属性一次返回一个级别。