2008-12-04 6 views
0

J'ai un contrôle gridview qui affiche les données renvoyées par DB. La propriété datakey de la grille est liée à la colonne ID du DBBoutons du contrôle gridview

Chaque enregistrement dans le GV avait 2 boutons et une case à cocher. Lorsque l'un de ces contrôles est cliqué, je veux obtenir la ligne sur laquelle on a cliqué et exécuter une action en fonction du contrôle sur lequel on a cliqué.

J'espérais pouvoir utiliser l'événement pour capturer row_command qui contrôle a été cliqué, mais qui n'a pas fait l'affaire à moins que je manque quelque chose

Répondre

0

Avez-vous attribué les boutons CommandName et CommandArgument?

+0

devio: J'ai suivi cette http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx – user38230

+0

cela ne répond pas à ma question – devio

+0

devio: oui i a assigné le nom de la commande et args aux boutons, mais pas à la case à cocher – user38230

0

Un problème pourrait également résider dans une mauvaise séquence d'événements du cycle de vie. Vous devriez relier les données à votre grille dès que vous le pouvez. Essayez de déplacer la liaison de données à l'événement Page_Init

0
Code Behind: 

    protected void gvCustomers_RowCommand(object sender, GridViewCommandEventArgs e) 
     { 
      if (e.CommandName.Equals("RowSelected")) 
      { 
       GridViewRow row = (((e.CommandSource) as Button).NamingContainer) as GridViewRow; 
       Label label = row.FindControl("lblFirstName") as Label; 

       Response.Write(label.Text); 

      } 
     } 

Et voici le ASPX Vue:

<asp:GridView AutoGenerateColumns="false" ID="gvCustomers" runat="server" OnRowCommand="gvCustomers_RowCommand" > 

    <Columns> 

    <asp:TemplateField> 
    <ItemTemplate> 

    <asp:Label ID="lblFirstName" runat="server" Text ='<%# Eval("FirstName") %>' /> 

    </ItemTemplate> 
    </asp:TemplateField> 

     <asp:TemplateField> 
    <ItemTemplate> 
    <asp:Button Text="Select" ID="btn1" runat="server" CommandArgument ='<%# Eval("FirstName") %>' CommandName="RowSelected" /> 
    </ItemTemplate> 
    </asp:TemplateField> 

    </Columns> 

    </asp:GridView> 
0
<asp:GridView ID="gvProduct" runat="server" AutoGenerateColumns="False" DataKeyNames="ID"OnRowCommand="gvProduct_RowCommand" > 
<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:ImageButton ID="btnEdit" runat="server" CommandName="EditCommand" Text="Edit" /> 
     </ItemTemplate>           
    </asp:TemplateField> 
<asp:BoundField DataField="ProjectNo" HeaderText="ProjectNo" /> 
<asp:BoundField DataField="Date" HeaderText="Date" /> 
<asp:BoundField DataField="Shift" HeaderText="شیفت" /> 
</Columns>   
</asp:GridView> 

ce code:

protected void gvProduct_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "EditCommand") 
     { 
      GridViewRow Row = (GridViewRow)((Control)e.CommandSource).NamingContainer; 
      int productID = Convert.ToInt32(gvProduct.DataKeys[Row.RowIndex].Value); 

      EditFunction(productID); 
     } 
    } 

"EditFunction" est la fonction que vous définissez vos codes pour la ligne sélectionnée et je l'ai supprimé ici.

vous avez besoin de quelque chose comme ça?

Questions connexes