2016-04-03 58 views
1

我有一个只有一列ItemTemplate的gridview1的页面。在我gridview1的这个ItemTemplate里面我有一个gridview2。我没有与gridview1的问题。在代码隐藏我通常填充它:GridView未在CodeBehind ASP NET中找到

gridview1.DataSource = DaoUser.findAll(); 
gridview1.DataBind(); 

而gridview1正确创建。但是当我尝试做与gridview2同样的事情,我已经有了一个消息错误:

gridview2.DataSource = DaoUser.findAll(); 
gridview2.DataBind(); 

名称“gridview2”不在当前情况下存在

我的aspx代码:

<asp:GridView runat="server" ID="gridview1"> 
    <colums> 
     <asp:TemplateField> 
      <ItemTemplate> 
        <asp:GridView runat="server" ID="gridview2"> 
        </asp:Gridview> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </columns>  
</asp:GridView> 

回答

2

你所要做的是找到使用GridView1_RowDataBound事件的行中的控制,因为你必须在每一行中网格视图(这是VB):

Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound 

    If e.Row.RowState = DataControlRowState.Normal And e.Row.RowType = DataControlRowType.DataRow Then 

     Dim tmpGridView As GridView = e.Row.FindControl("GridView2") 

     If Not tmpGridView Is Nothing Then 
      tmpGridView.DataSource = DaoUser.findAll 
      tmpGridView.DataBind() 
     End If 

    End If 


End Sub