J'ai la structure suivante dans une page ASPX:Comment trouver l'Asp: GridView imbriqué dans le code suivant?
<asp:Panel ID="pnlCust" runat="server">
<asp:GridView ID="gvMaster" runat="server"
OnRowCreated="gvMaster_RowCreated">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Panel ID="pnlMaster" runat="server">
//...
</asp:Panel>
<asp:Panel ID="pnlDetails" runat="server">
<asp:GridView ID="gvDetails" runat="server">
<Columns>
//...
</Columns>
</asp:GridView>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</asp:Panel>
Les panneaux sont utilisés pour la CollapsiblePanelExtender de la Ajax Control Toolkit.
Je suis en train d'utiliser FindControl pour trouver les gvDetails contrôle dans le code-behind, mais ma dernière tentative n'a pas fonctionné, ce qui est dans le cas gvMaster_RowCreated:
GridView gv =
e.Row.FindControl("pnlDetails").FindControl("gvDetails") as GridView;
où e est GridViewRowEventArgs
Je fais fondamentalement ce qui était sur cette page, mais je n'utilise pas un SqlDataSource, cependant, la personne trouve fondamentalement le SqlDataSource par l'intermédiaire du FindControl de l'argument e passé de l'événement de RowCreated. Voici le lien:
J'ai essayé cela, comme vous avez ci-dessus, mais je l'ai fait de la manière suivante qui a renvoyé une valeur nulle: GridView gv = e.Row.FindControl ("gvDetails") comme GridView; – Xaisoft
J'ai essayé votre extrait ci-dessus et quand je franchis, gv est nul. – Xaisoft
Je suppose que je suis perplexe. Pardon! La seule chose que j'essaierais, c'est d'utiliser l'événement RowDataBound au lieu de RowCreated, mais c'est probablement long. –