如何在asp.net中获得面板的组件

本文关键字:组件 asp net | 更新日期: 2023-09-27 18:03:21

我有一个面板,持有一些组件的asp.net.I生成这个组件(如下拉列表,复选框,文本框等)根据我的数据。

下拉列表示例:

System.Web.UI.WebControls.Panel comboBoxOlustur(ANKETQUESTIONBec bec)
{
    System.Web.UI.WebControls.Panel p = new System.Web.UI.WebControls.Panel();
    Table tb = new Table();
    TableRow tr = new TableRow();
    TableCell tdSoru = new TableCell(), tdComboBox = new TableCell();
    System.Web.UI.WebControls.DropDownList cmb = new System.Web.UI.WebControls.DropDownList();
    tdSoru.Text = bec.QUESTION;
    tdSoru.Width = 350;
    tdSoru.VerticalAlign = VerticalAlign.Top;
    if (bec.WIDTH != null)
        cmb.Width = (short)bec.WIDTH;
    else
        cmb.Width = 200;
    cmb.Height = 18;
    //data operations
    QUESTIONSELECTIONDEFINITIONBlc blc = new QUESTIONSELECTIONDEFINITIONBlc();
    List<QUESTIONSELECTIONDEFINITIONBec> secenekler = blc.GetByAnketQueID(bec.ID,1);
    if (secenekler != null)
    {
        ListItem li;
        li = new ListItem();
        li.Value = "-1";
        li.Text = "--Seçiniz--";
        cmb.Items.Add(li);
        for (int i = 0; i < secenekler.Count; i++)
        {
            li = new ListItem();
            li.Value = secenekler[i].ID.ToString();
            li.Text = secenekler[i].NAME;
            cmb.Items.Add(li);
        }
    }
    //end of data operations
    tdComboBox.Controls.Add(cmb);
    tr.Cells.Add(tdSoru);
    tr.Cells.Add(tdComboBox);
    tb.Rows.Add(tr);
    p.Controls.Add(tb);
    return p;
}

在这一点上,我想到达这个下拉列表,以获得它的值。我如何实现这一点?

如何在asp.net中获得面板的组件

我认为最好的方法是适当地命名您的控件,然后使用FindControl。

你可能需要递归地使用FindControl,以便轻松地搜索多个图层。

根据您的需要,声明一个变量或变量数组来跟踪添加的每个控件也是有意义的。这种方法有可能以一种不需要搜索控件的方式使用,因此会更有效。

我使用了这样的东西来获取所有的子控件:

    private void GetAllControls(Control container, Type type)
    {
        foreach (Control control in container.Controls)
        {
            if (control.Controls.Count > 0)
            {
                GetAllControls(control, type);
            }
            if (control.GetType() == type) ControlList.Add(control);
        }
    }

,然后执行如下操作:

    this.GetAllControls(this.YourPanel, typeof(Button));
    this.GetAllControls(this.YourPanel, typeof(DropDownList));
    this.GetAllControls(this.YourPanel, typeof(TextBox));
    this.GetAllControls(this.YourPanel, typeof(CheckBox));