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个控件;我已经做了足够的工作来找到复选框了吗?还是我仍然没有朝着正确的方向前进?

提前感谢!

F回发后终止控件

确保它们是按照您提到的那样创建的。您可以使用IE Developer工具(F12)或页面源代码并检查其ID。然后您应该能够使用FindControl()。您可能必须将其强制转换为CheckBox控件,以便检查其是否已选中。。。

这不是搜索控件的问题。您只需要在OnInit阶段的每个请求中正确添加它们。

不要使用Literal控件添加ASP.NET服务器控件。请使用像PlaceHolder这样的特殊容器。

然后,如果你知道控件的Id,你可以简单地使用FindControl():

Control myControl1 = FindControl("TextBox2");