2009-07-25 95 views
0

我想使用FindControl()来设置页面上的一些DropDownLists的值。FindControl()返回复制?

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

<编辑>

好吧,这apparears,这其实也不是返回一个副本,它根本就没有让我设置控件的公开程度,其他属性我设置做工精细。

有没有人有任何见识,为什么这可能是这种情况? 我试着在快速模式下设置它,然后立即查看数值,但实际上并没有改变数值!

</EDIT >

<编辑>(二)

好吧,我在Page_Load中这样做,这不是在GridView(我喜欢你们是如何假定一个CUS我使用FindControl())。

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

</EDIT >

谁能帮助?

干杯,埃德

+0

它不复制控件。必须有其他的错误。 – 2009-07-25 11:29:17

+0

这正是我以为 - >做了更多的测试 - >更新问题。 – 2009-07-25 11:30:54

+0

PS:如果您隐藏面板,则无需将其中的控件设置为隐藏。 – Thorarin 2009-07-25 12:09:05

回答

3

编辑:
哇,等一下...你设置Visible属性true,而不是假的? 在你的评论中,你提到它立即改变。 Visible属性将评估为false,如果它的父项设置为不可见,则无论您多久告诉它该值应为true

1

你在哪里打电话FindControl()并设置Visible财产?

有关信息,FindControl()基于字符串id获取对当前命名容器中控件的引用,并且不复制控件。为了与控制工作,你应该把它转换为您所期望的控件的类型 -

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

这个例子将允许你在一个GridView的OnRowDataBound事件DropDownList控件工作。