I have a listview with a nested gridview. I'm having trouble accessing the gridview. I want the gridview to be filled and displayed when a linkbutton is clicked on the listview. I use FindControl to get linkbutton - but cannot get FindControl to work for the nested gridview. The gridview works outside the listview, but it fails when nested.
Snippet:
<asp:ListView> ...............
<SelectedItemTemplate>
<tr >
<td>
<asp:Label ID="BuildingLabel" runat="server" Text='<%# Eval("Building") %>' CommandName="Select"/>
</td>
<td>
<asp:Label ID="AreaOccupied_m2Label" runat="server"
Text='<%# Eval("[AreaOccupied m2]") %>' />
</td>
</tr>
<tr><td colspan = "2">
</td> </tr>
<tr><td colspan = "2"> <aspanel ID="pnlInnerGrid" runat="server">
<asp:GridView ID="GridViewBlocksInner" runat="server">
</asp:GridView>
</aspanel></td></tr>
</SelectedItemTemplate>
</asp:ListView>
Code Behind:
Protected Sub ListViewBuildings_SelectedIndexChanging(ByVal sender As Object, ByVal e As ListViewSelectEventArgs)
'FindControl for linkbutton Works
Dim item As ListViewItem = CType(ListViewBuildings.Items(e.NewSelectedIndex), ListViewItem)
Dim l As LinkButton = CType(item.FindControl("BuildingLabel"), LinkButton)
'FindControl for gridview Does Not Work
Dim gitem As ListViewItem = CType(ListViewBuildings.Items(e.NewSelectedIndex), ListViewItem)
Dim gv As GridView = CType(item.FindControl("GridViewBlocksInner"), GridView)
Try
dsBlocks = SqlHelper.ExecuteDataset( _
DBConnectionString, CommandType.StoredProcedure, _
"procName", New SqlParameter("@Site", strSite))
'Next line gives Error:
gv.DataSource = dsBlocks
gv.DataBind()
Catch ex As Exception
lblMessage.Text = lblMessage.Text & " Error: " + ex.ToString
End Try
Snippet:
<asp:ListView> ...............
<SelectedItemTemplate>
<tr >
<td>
<asp:Label ID="BuildingLabel" runat="server" Text='<%# Eval("Building") %>' CommandName="Select"/>
</td>
<td>
<asp:Label ID="AreaOccupied_m2Label" runat="server"
Text='<%# Eval("[AreaOccupied m2]") %>' />
</td>
</tr>
<tr><td colspan = "2">
</td> </tr>
<tr><td colspan = "2"> <aspanel ID="pnlInnerGrid" runat="server">
<asp:GridView ID="GridViewBlocksInner" runat="server">
</asp:GridView>
</aspanel></td></tr>
</SelectedItemTemplate>
</asp:ListView>
Code Behind:
Protected Sub ListViewBuildings_SelectedIndexChanging(ByVal sender As Object, ByVal e As ListViewSelectEventArgs)
'FindControl for linkbutton Works
Dim item As ListViewItem = CType(ListViewBuildings.Items(e.NewSelectedIndex), ListViewItem)
Dim l As LinkButton = CType(item.FindControl("BuildingLabel"), LinkButton)
'FindControl for gridview Does Not Work
Dim gitem As ListViewItem = CType(ListViewBuildings.Items(e.NewSelectedIndex), ListViewItem)
Dim gv As GridView = CType(item.FindControl("GridViewBlocksInner"), GridView)
Try
dsBlocks = SqlHelper.ExecuteDataset( _
DBConnectionString, CommandType.StoredProcedure, _
"procName", New SqlParameter("@Site", strSite))
'Next line gives Error:
gv.DataSource = dsBlocks
gv.DataBind()
Catch ex As Exception
lblMessage.Text = lblMessage.Text & " Error: " + ex.ToString
End Try