通过CreateUserWizardStep中的ControlCollection迭代

时间:2009-05-12 01:01:42

标签: c# .net asp.net linq collections

我正在尝试遍历CreateUserWizardStep的CreatedUser事件中的ControlCollection。我有一个ContentTemplate,其中包含一个完整的复选框,我用它来收集用户在一周内的可用性。为了简洁起见,我将我的代码粘贴到pastebin上。

Here是指向.aspx页面的链接。   Here是CreatedUser事件。

这个循环:

foreach (Control c in CreateUserWizardStep1.ContentTemplateContainer.Controls)
    {
        if (c.GetType() == typeof(CheckBox))
        {
        }
    }

给我一​​个WizardDefaultInnerTable而不是......更容易使用的东西。

如何进入第二张桌子内的复选框?我想要做的是找到checked属性,然后构建我可以放入数据库的字符串。任何指导都表示赞赏。

谢谢!

1 个答案:

答案 0 :(得分:2)

你必须以递归的方式完成控制。但是,你也可以通过你设置的id来引用它们。

递归解决方案看起来像:

IEnumerable<T> FindControls<T>(Control parent) where T : Control {
   T t = parent as T;
   if (t != null) yield return t;

   foreach (Control c in parent.Controls) {
      foreach (var c2 in FindControls<T>(c)) yield return c2;
   }
}