2012-10-05 49 views
0

如何使用c#从面板中找到控件。我正在使用下面的代码来找到控件。但它总是返回null。在asp.net面板中查找控件

我的部分代码是在这里:

DropDownList ddl = new DropDownList(); 
ddl.ID = "ID" + i; 
ddl.DataValueField = "fld_Head"; 
ddl.DataTextField = "fld_Head"; 
ddl.DataSource = DVS; 
ddl.DataBind(); 
Panel1.Controls.Add(ddl); 
Panel1.Controls.Add(new LiteralControl("  ")); 

另一个进程代码:

if (DT.Rows.Count > 0) 
{ 
    string head = Convert.ToString(DT.Rows[i - 1]["fld_Head"]); 
    if (head != "") 
    { 
    DropDownList Head = ((DropDownList)this.Panel1.FindControl("ID" + i)); 
           Head.SelectedItem.Text = head; 
    } 
} 
+1

您确定您检查了该控件实际上存在于面板中吗?查看你的asp.net页面的页面源代码。 'FindControl'应该可以工作。 –

+0

是的,该控件出现在我的页面上,并带有ID。 – romi

+2

你想在回发后找到控件吗? – Rawling

回答

0
Foreach Control c in Panel.Controls 

    c.Name 
    c.Id 
    c.Whatever 
+1

虽然FindControl方法存在,但枚举面板中的所有控件并不意味着什么。他可以通过枚举来验证控件的存在,但它既不是找到控件的正确方法,也不是解决当前问题的方法。如果'FindControl'找不到它,它将不在枚举中。 –

+1

谢谢你对我的教育:)当我回答时,问题是“通过控制迭代”。现在它被编辑了,我看起来像一个白痴:) – WozzeC

3

如果动态添加控件到另一个容器控件作为一个孩子,那将无法使用在下一篇文章中回到同一个容器中的子控件集合。所以你必须做的是再次创建相同的控件,分配属性并再次添加到子控件集合中。