如何在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;
}
在这一点上,我想到达这个下拉列表,以获得它的值。我如何实现这一点?
我认为最好的方法是适当地命名您的控件,然后使用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));