F回发后终止控件
本文关键字:终止 控件 | 更新日期: 2023-09-27 18:21:50
我有一个在回发时动态创建的表;它是一个文档列表,每行都有一个标准的html复选框。目的是能够选择&一键下载多个文档。
我遇到的问题是我无法访问任何复选框。我猜它们不处于视图状态,因为它们不是在Load或onInit上创建的。
好的,所以客户端选择他们的文档类别&单击"获取文档"按钮。然后访问数据库并创建包含复选框的html行。然后将HTML加载到位于标记之间的文字中。
更新
好的,所以我没有使用,并且已经通过后面的代码创建了行和单元格。我现在可以通过Trace看到Conrol树中的复选框。
ctl00$ContentPlaceHolder1$639eec32-f1a8-4fbb-a42-d429571fc3a5 System.Web.UI.WebControls.CheckBox
这就是我试图找到的复选框:
public static Control FindControlRecursive(Control Root, string Id) {
if (Root.ID == Id) return Root;
foreach (Control Ctl in Root.Controls) {
Control FoundCtl = FindControlRecursive(Ctl, Id);
if (FoundCtl != null) return FoundCtl;
}
return null;
}
当FindControlRecursive函数运行时;它在页面上只看到5个控件;我已经做了足够的工作来找到复选框了吗?还是我仍然没有朝着正确的方向前进?
提前感谢!
确保它们是按照您提到的那样创建的。您可以使用IE Developer工具(F12)或页面源代码并检查其ID。然后您应该能够使用FindControl()。您可能必须将其强制转换为CheckBox控件,以便检查其是否已选中。。。
这不是搜索控件的问题。您只需要在OnInit阶段的每个请求中正确添加它们。
不要使用Literal控件添加ASP.NET服务器控件。请使用像PlaceHolder这样的特殊容器。
然后,如果你知道控件的Id,你可以简单地使用FindControl():
Control myControl1 = FindControl("TextBox2");