在内部能知道外部的gv.rows.count=25,但用常量gv.rows[10]访问,也说总说index非0或超过范围。内部gv不能访问外部gv吗

解决方案 »

  1.   

    内部gv的GridView3_RowDataBound中
    ((LinkButton)e.Row.Cells[2].Controls[0]).Text = outer_gv.Rows.Count.ToString();   Text 能听得到25,不报错
    但((LinkButton)e.Row.Cells[2].Controls[0]).Text = outer_gv.Rows[10].cell.count.ToString();要报错,总说index非0或超过范围
      

  2.   

    同样的左值不变,右值为outer_gv.Rows.Count.ToString();时不出错,右值为25
    但右值换为常量outer_gv.Rows[10].cell.count.ToString();说index非0或超过范围,换过若干个常量也是,包括头尾
      

  3.   

    GridView3_RowDataBound
    是不是你这个加载顺序的问题,在执行这个RowDataBound的时候实际上这个控件还没有实际加载上25行
    你用你这个outer_gv的RowDataBound事件试试
      

  4.   

    GridView3是内部gv,顺序不对我也想过,但能得到25行,说明outer_gv加载完了
      

  5.   

        protected void outer_gv_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //GridView3
                ((SqlDataSource)e.Row.FindControl("SqlDataSource4")).SelectParameters["id"].DefaultValue = outer_gv.DataKeys[e.Row.RowIndex].Values["id"].ToString();
                if (e.Row.RowIndex == 0)
                {
                    ((GridView)e.Row.FindControl("GridView3")).ShowHeader = true;
                }
                ((GridView)e.Row.FindControl("GridView3")).DataBind();
            }
        }
    外部gv如下
      

  6.   

    嵌套规则是outer_gv仅有一个模板列,模板列中有2个gv。其中gv3显示总信息,gv5显示详细信息