2009-01-07 5 views
0

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; 

Répondre

1

Pas la chose la plus propre au monde mais c'est ainsi que je l'ai fait dans le passé. Habituellement, je vais faire tout une ligne, mais je vais le décomposer ici, donc c'est plus clair. Fondamentalement, vous obtenez votre bouton et monter la chaîne de bouton en cellule, de cellule en ligne.

Voici une version de ligne:

var id = ((GridViewRow)((LinkButton)((GridViewCommandEventArgs)e).CommandSource).Parent.Parent).RowIndex; 
+0

J'ai fourni un suivi de votre réponse –

+1

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. –

Questions connexes