2012-06-10 2 views
1

J'ai écrit un code ASP pour un projet de type webshop. Il existe une méthode qui ajoute le ProductID à un cookie et ajoute 1 à la quantité du produit. Une autre méthode lit le cookie, transforme le cookie en une table de données et le place dans une grille. Cette grille est essentiellement la page shoppingcart.aspx. Ce dont j'ai besoin maintenant est un moyen d'ajouter un buttonfield à ce gridview où je peux ajouter un bouton ++ (comme le bouton ajouter au panier d'achat sur une page de produit), les boutons normaux d'asp prennent un onclick="methodname" mais ceux dans le gridview ne le fait pas.ASP.net C# événement Gridview ButtonField onclick

add1ToShoppingCart(string productId) 
{[...]shoppingCartCookie[productId] = (amount + 1).ToString();} 

C'est le code que j'utilise pour tous les boutons ++. Il prend le button.id (buttonID = productID). J'ai donc besoin d'un moyen pour que tous les boutons soient la même image, mais le boutonID doit être databound à l'ID de produit afin qu'il puisse en quelque sorte exécuter cette méthode (avec une sorte de onclick="").

J'ai regardé et googlé pour les deux dernières heures mais je ne peux pas sembler trouver n'importe quoi. Dans le passé, j'ai trouvé beaucoup de réponses sur stackoverflow alors j'espérais que quelqu'un ici pourrait m'aider.

Merci d'avance.

+4

Mauvais mauvais, ne pas sauvegarder votre liste de paniers sur les cookies, conservez votre liste dans la base de données connectée au cookie. Les cookies sont limités sur le côté, vous les portez dans toutes les pages, et ils peuvent manipuler pour pirater votre magasin. – Aristos

Répondre

8

vous pouvez utiliser le champ Modèle:

     <asp:TemplateField ItemStyle-Width="33px" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" 
          ShowHeader="false" HeaderStyle-Height="40px"> 
          <ItemTemplate> 
           <asp:ImageButton ID="btnAddToCard" runat="server" ImageUrl="~/Images/btnAddToCard.png" CausesValidation="false" 
            CommandName="AddToCard" CommandArgument='<%# Eval("ID") %>' 
            /> 
          </ItemTemplate> 
          <HeaderStyle Height="40px"></HeaderStyle> 
          <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="33px"></ItemStyle> 
         </asp:TemplateField> 

et dans votre code C# derrière vous créez l'événement suivant de votre gridview et faites ce que vous voulez:

protected void GV_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "AddToCard") 
     { 
      //Write code to add to card 
     } 
    } 

GV est l'ID de mon GridView!

+0

Merci beaucoup, ça marche maintenant! – stevanov

+0

Vous êtes très bienvenu! – Karamafrooz

Questions connexes