FindControl()返回副本?

时间:2009-07-25 11:21:15

标签: c# asp.net webforms

我正在尝试使用FindControl()来设置页面上某些DropDownLists的值。

由于某种原因,似乎FindControl()返回控件对象的副本而不是引用,我的印象是,由于缺少控件的复制构造函数,情况并非如此?

<编辑>

好吧,它表示它实际上并没有返回副本,它只是不让我设置控件的可见性,我设置的其他属性工作正常。

有没有人知道为什么会出现这种情况? 我已经尝试在快速监视模式下设置它然后直接查看值,这实际上并没有改变值!

< /编辑>

<编辑> (2)

好的,我在Page_Load中这样做,并且它不在gridview中(我喜欢你们假设我使用FindControl()的一个cus。)

我这样做是因为我必须在动态数量的类似命名列表上执行一组操作,并且在循环中执行它比在硬编码中更好。

< /编辑>

有人可以帮忙吗?

干杯,艾德

2 个答案:

答案 0 :(得分:3)

修改
哇,等等......你是否将Visible属性设置为true而不是假? 在您的评论中,您会立即提及它的变化。 Visible属性将评估为false,如果它的父级设置为不可见,无论您多久告诉它该值应为true

答案 1 :(得分:1)

您在哪里打电话FindControl()并设置Visible属性?

有关信息,FindControl()根据字符串id获取对当前命名容器中控件的引用,并且不复制控件。为了使用控件,您应该将其强制转换为您期望的控件类型 -

DropDownList ddl = (DropDownList)e.Row.FindControl("myDropDownList");

此示例允许您在GridView的OnRowDataBound事件中使用DropDownList控件。