我有一个RealWorld.Grids.FrozenGridView
,在选择了网格上的几个复选框(在最后一列中)后,我尝试访问C#文件中的行以在所选行上运行某些任务,但网格出现为null,当我尝试根据网格名称从页面中找到控件时,结果为null。
gridname = (RealWorld.Grids.FrozenGridView)this.FindControl("gridname") as RealWorld.Grids.FrozenGridView;
网格位于更新面板中,以便访问网格我在find控件中包含更新面板,如下所示:
UpdatePanel up1 = new UpdatePanel();
up1.ID = "updatepanelID";
Label gn = (Label)up1.FindControl("labelname");
我也尝试过:
label lbl = (Label)this.Page.FindControl("updatepanelid").FindControl("labelname") as Label;
这应该发生在button_click事件
中有没有人有这类问题的经验?
感谢任何帮助!
答案 0 :(得分:0)
FindControl并不总是按预期工作。试试这个递归函数,并使用你最顶层的代码。
public static Control FindControlRecursive(Control ctlRoot, string sControlId)
{
// if this control is the one we are looking for, break from the recursion
// and return the control.
if (ctlRoot.ID == sControlId)
{
return ctlRoot;
}
// loop the child controls of this parent control and call recursively.
foreach (Control ctl in ctlRoot.Controls)
{
Control ctlFound = FindControlRecursive(ctl, sControlId);
// if we found the control, return it.
if (ctlFound != null)
{
return ctlFound;
}
}// we never found the control so just return null.
return null;
}
你的电话会是这样的。
var ridname = (RealWorld.Grids.FrozenGridView)FindControl(this, "gridname") as RealWorld.Grids.FrozenGridView;