谁可以向我解释一下?
CheckBox ckRequest = new CheckBox();
ckRequest.ID = "ckRequest";
ckRequest.DataBinding += new EventHandler(this.CkIsRequested_DataBinding);
container.Controls.Add(ckRequest);
Control con = container.FindControl("ckRequest");
调试显示con仍为空。
调试也告诉我,那个conteiner.Controls有一个ID为“ckRequest”的项目
这怎么可能????
非常感谢您的回答。
其实我尝试以下方法。 findcontrol does not find dynamically created control in rowUpdating eventhandler 对我来说,findcontrol仅适用于创建的页面。
在哪个时间点创建页面的可视树?
答案 0 :(得分:3)
FindControl
仅在控件位于页面的可视树中时才有效
在你的情况下你可以尝试这个
var checkBoxesInContainer = container.Controls.OfType<CheckBox>();
答案 1 :(得分:2)
您可以使用以下内容:
Control con =
container.Controls.Cast<Control>().First(item => item.ID == "ckRequest");
答案 2 :(得分:0)
您可能想尝试以下内容:
//GET THE CHECKBOXLIST
Control c = phCategories.Controls.Cast<Control>().First(item => item.ID == "cblCatID-" + catID && item.GetType().Name == "CheckBoxList");
if (c.GetType().Name == "CheckBoxList")
{
cbl = (CheckBoxList)c;
}
出于某种原因,我需要首先将其作为控件。如果我没有这样做,我似乎拿了一个标签(这对我来说没有意义,因为它实际上并没有抓住标签)。希望它对某人有所帮助。