无法访问updatepanel中的Frozen GridView

时间:2011-12-21 13:55:15

标签: c# gridview

我有一个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事件

有没有人有这类问题的经验?

感谢任何帮助!

1 个答案:

答案 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;