【问题标题】:loop through drop down list in content page - VS2008循环浏览内容页面中的下拉列表 - VS2008
【发布时间】:2008-11-24 15:25:11
【问题描述】:

我有一个母版页和一个内容页

我的内容页面有许多控件,- 下拉列表、文本框、单选按钮。

我想遍历所有控件,如果它是上面的控件之一,那么我想获取选定的值、文本等

我知道我可以通过名称直接访问控件,但由于这是我在 asp.net 上的学习经历,我希望能够浏览控件集合

我试过了

foreach(Controls ctrl in Master.Controls)
{
}

但我无法使用所需的控件。

编辑:: 我想我拔枪的速度有点太快了,因为我的智能感知一直在我身上失败。我在内容页面上的代码中解决了我的问题

protected void btnSearch_Click(object sender, EventArgs e)
        {
            foreach (Control ctrl in Master.Controls)
            {
                if (ctrl is HtmlForm)
                {
                    foreach(Control formControl in ctrl.Controls)
                    {
                        if (formControl is ContentPlaceHolder)
                        {
                            foreach (Control placeHolderControl in formControl.Controls)
                            {
                                if (placeHolderControl is DropDownList)
                                {
                                    string test = "AA";
                                }
                            }
                        }
                    }

                }

            }
        }

现在构建一个递归例程

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    控件处于层次结构中。页面中唯一的控件通常是一个表单(但并非总是如此)。该表单包含出现在<form> 标记中的控件。例如,如果表单中有 <p runat="server"><p> 将包含出现在其中的所有控件。

    例如,

    <form runat="server">
      <p runat="server">
        <asp:Label runat="server" />
        <asp:TextBox runat="server" />
      </p>
      <p runat="server">
        <asp:Button runat="server" />
      </p>
    </form>
    

    将产生以下结构:

    form
     - p
       - label
       - textbox
     - p
       - button
    

    因此,您必须循环访问直接包含控件中的控件。

    -- 编辑:

    此外,要遍历所有控件,您需要递归或迭代地循环到层次结构中

    // This is the recursive version
    public void LoopControl(Control parent) {
        foreach (Control control in parent) {
            // do stuff
            LoopControl(control);
        }
    }
    
    // And then
    LoopControl(Page);
    

    【讨论】:

      【解决方案2】:

      如果您尝试从母版页访问内容页控件,则需要通过相应的 ContentPlaceHolder(在母版页上)访问这些控件。像这样:

      foreach (Control c in ContentPlaceHolder1.Controls)
      {
          Response.Write(c.ID );
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-24
        • 2010-09-10
        • 1970-01-01
        • 2021-08-27
        • 2020-10-14
        • 2016-08-08
        • 1970-01-01
        相关资源
        最近更新 更多