Poszedłem za samouczkiem http://www.codeproject.com/Articles/20047/Editable-Nested-GridView-All-in-One
Na stronie tabela odpowiadająca nadrzędnemu widokowi siatki jest renderowana, a inna tabela odpowiadająca podrzędnemu widokowi siatki musi znajdować się w wierszu tabeli nadrzędnej. Zamiast tego ma tylko pustą sekcję
<tr>
<td colspan="100%">
<div id="div1" style=style="display:block;position:relative;left:15px;OVERFLOW:auto;WIDTH:97%">
<div></div>
</div>
</td>
</tr>
Podczas debugowania z Visual Studio dowiedziałem się, że wykryto „potomek gridview” (kontrola serwera). W zdarzeniu ROwDataBound nadrzędnego widoku siatki można znaleźć podrzędną kontrolę widoku siatki w następujący sposób
GridView gv = new GridView();
gv = (GridView)row.FindControl("GridView2");
Założyłem to, ponieważ nie wygenerowano wyjątku zerowego odwołania
Odpowiedzi:
2 dla odpowiedzi № 1Czy ustawiłeś źródło danych siatki potomnej i związałeś ją później w siatce macierzystej? RowDataBound
? W przeciwnym razie nie będzie renderowana siatka.
var gv = (GridView)row.FindControl("GridView2");
gv.DataSource = someDataSource;
gv.DataBind();
Dygresja: I tak nie trzeba tworzyć instancji GridView za pomocą domyślnego konstruktora, gdy i tak masz odniesienie. Kod konstruujący GridView jest zbędny (nawet przy okazji projektu kodowego).