J'ai un gridview sur ma page aspx configuré l'événement OnRowCommand en utilisant une série d'objets LinkButton ASP.NET pour gérer la logique en utilisant la propriété CommandName. J'ai besoin d'accéder à la GridViewRow.RowIndex pour récupérer les valeurs de la ligne sélectionnée et notez qu'il s'agit d'un membre non-public de l'objet GridViewCommandEventArgs lors du débogage de l'applicationAccès aux membres non publics d'un objet GridViewCommandEventArgs
Y a-t-il un moyen d'accéder à cette propriété de theereere mieux la mise en oeuvre?
Voici mon code source:
page ASPX:
<asp:GridView ID="MyGridView" runat="server" OnRowCommand="MyGirdView_OnRowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton
id="MyLinkButton"
runat="server"
CommandName="MyCommand"
/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Code
derrière
protected void MyGirdView_OnRowCommand(object sender, GridViewCommandEventArgs e)
{
//need to access row index here....
}
MISE À JOUR:
@brendan - Je suis l'erreur de compilation suivante sur la ligne de code suivante:
"Impossible de convertir le type 'System.Web.UI.WebControls.GridViewCommandEventArgs' à 'System.Web.UI.WebControls.LinkButton'"
LinkButton lb = (LinkButton) ((GridViewCommandEventArgs)e.CommandSource);
I légèrement modifié le code et la solution suivante a fonctionné:
LinkButton lb = e.CommandSource as LinkButton;
GridViewRow gvr = lb.Parent.Parent as GridViewRow;
int gvr = gvr.RowIndex;
J'ai fourni un suivi de votre réponse –
En fait, cela est de manière assez propre pour gérer cela. Je n'utilise pas souvent les gridviews, mais quand je le fais, je récupère toutes les informations du contrôle d'appel. –