FindControl不适用于动态复选框

时间:2011-07-14 19:38:18

标签: c# asp.net

查找控件似乎不适用于我的动态复选框;我想要做的是查看用户是否已经选中了一个复选框,最终还有哪些复选框。

在我的代码中,我有一个测试,看看它是否正常工作

 public void test()
{
    // Find control on page.
    CheckBox myControl1 = (CheckBox)Table1.FindControl("CBX0");
    if (myControl1 != null)
    {
        // Get control's parent.
        Control myControl2 = myControl1.Parent;
        Response.Write("Parent of the text box is : " + myControl2.ID);
        if (myControl1.Checked == true)
        {
            Response.Write("check box checked");
        }
    }
    else
    {
        Response.Write("Control not found");
    }
}


当我运行我的代码时,它确实打印“文本框的父级”,但它不会打印父级,这应该是mycontrol2.id

4 个答案:

答案 0 :(得分:1)

父控件可能没有ID。

而是尝试:

Response.Write("Parent of the text box is : " + myControl2);

找出Parent的类型。我想如果你期望父母成为表,你就错了。它可能是一个TableCell。

答案 1 :(得分:0)

myControl2可能在层次结构中更高;继续钻取层次结构以查找控件,它可能是mycontrol1.Parent.Parent或更多父引用。 ASP.NET有时会将其他控件放在层次结构中,因此它可能不是直接父级。

HTH。

答案 2 :(得分:0)

创建复选框时是否有runat =“server”?

答案 3 :(得分:0)

你什么时候打电话给这个测试方法。考虑在onPreRender上调用它,它应该返回ID。当您动态创建控件并添加到页面时,如果不指定nny ID,.net会在渲染到浏览器之前分配它们