2009-09-09 7 views
1

J'ai un GridView sur ma page ASP.NET. Ce que je veux est d'exécuter une fonction quand je clique sur sur la ligne, et je veux aussi changer le style de cette rangée. Je ne veux pas utiliser le bouton de sélection du champ de commande de type. Toute aide s'il vous plaît?GridView Row sélectionnable

+0

Êtes-vous en mesure de fournir plus de détails? Est-ce que la fonction est en Javascript ou sur le serveur? Quel est le contenu de votre GridViewRow? – Pike65

Répondre

1

Pour seulement la création d'un gridview rowclickable: http://aspadvice.com/blogs/joteke/archive/2006/01/07/14576.aspx

Vous pouvez faire un TemplateField, ajoutez un linkbutton là-dedans, faire un CommandName = "Select" et un CommandArgument comme CommandArgument = » <% # Eval (» ID ")%> '. Ensuite, vous pouvez attacher un gestionnaire d'événement à la ItemCommand de Gridview, et faire tout ce que vous voulez y faire, en vérifiant le commandname et commandargument dans EventArgs.

Quelque chose comme ceci:

<asp:GridView ID="test" runat="server" onrowcommand="test_RowCommand"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton runat="server" CommandArgument='<%#Eval("ID") %>' CommandName="ActionName">Click here</asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

et dans le codebehind

protected void test_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "ActionName") 
     { 
      int id = int.Parse(e.CommandArgument.ToString()); 
      //do stuff 
     } 
    } 
+0

J'ai trouvé quelque chose comme ça: OnRowDataBound = « functionName » mais il est pas clair ... tu peux me aider avec cette solution –

+0

Voir l'édition que j'ai fait –

+0

je vous remercie de votre suggestion, mais je veux tirer la fonction lorsque l'utilisateur cliquez dans n'importe quel endroit sur la ligne sans cliquer sur un bouton normal –

0

Check this out:

En cas RowCreated du GridView, vous allez faire une boucle à travers chaque ligne telle qu'elle est créée:

If e.Row.RowType = DataControlRowType.DataRow Then 
    e.Row.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference([grid_name], e.Row.RowIndex)) 
End If 

C'est à peu près aussi loin que je l'ai eu. Vous allez traiter l'événement dans Page_Load, mais je suis en train de travailler dessus moi-même sans que deux grilles sur la même page s'affrontent. Bonne chance, j'espère que ça aide. Il va au moins vous rendre à la publication ...

+0

J'ai figuré le reste; voici un résumé sur mon blog. J'espère que cela aide quelqu'un: http://patrickckozub.blogspot.com/2010/02/selectable-gridview.html – pckozub

Questions connexes