我正在尝试使用FindControl()来设置页面上某些DropDownLists的值。
由于某种原因,似乎FindControl()返回控件对象的副本而不是引用,我的印象是,由于缺少控件的复制构造函数,情况并非如此?
<编辑>
好吧,它表示它实际上并没有返回副本,它只是不让我设置控件的可见性,我设置的其他属性工作正常。
有没有人知道为什么会出现这种情况? 我已经尝试在快速监视模式下设置它然后直接查看值,这实际上并没有改变值!
< /编辑>
<编辑> (2)
好的,我在Page_Load中这样做,并且它不在gridview中(我喜欢你们假设我使用FindControl()的一个cus。)
我这样做是因为我必须在动态数量的类似命名列表上执行一组操作,并且在循环中执行它比在硬编码中更好。
< /编辑>
有人可以帮忙吗?
干杯,艾德
答案 0 :(得分:3)
修改强>
哇,等等......你是否将Visible属性设置为true
而不是假?
在您的评论中,您会立即提及它的变化。 Visible
属性将评估为false
,如果它的父级设置为不可见,无论您多久告诉它该值应为true
。
答案 1 :(得分:1)
您在哪里打电话FindControl()
并设置Visible
属性?
有关信息,FindControl()
根据字符串id
获取对当前命名容器中控件的引用,并且不复制控件。为了使用控件,您应该将其强制转换为您期望的控件类型 -
DropDownList ddl = (DropDownList)e.Row.FindControl("myDropDownList");
此示例允许您在GridView的OnRowDataBound事件中使用DropDownList控件。