2012-06-10 194 views
1

我已经写了一个网上商店类型项目的ASP代码。有一种方法可以将ProductID添加到Cookie中,并将产品的数量加1。 另一种方法是读取cookie,将cookie转换为数据表并将其放入gridview中。这个gridview基本上是shoppingcart.aspx页面。ASP.net C#Gridview ButtonField onclick事件

我现在需要的是一种将buttonfield添加到gridview的方式,我可以在其中添加一个++按钮(例如添加到产品页面上的购物车按钮),普通的asp按钮需要onclick="methodname"但这些在gridview不。

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

这是我用于所有++按钮的代码。它采用button.id(buttonID = productID)。所以我需要一种方法来让所有的按钮都是相同的图像,但buttonID必须是数据绑定到productID,所以它可以以某种方式执行该方法(某种onclick="")。

我过去几个小时看过并搜索了一下,但我似乎找不到任何东西。在过去,我在stackoverflow上找到了很多答案,所以我希望这里的某个人可以提供帮助。

在此先感谢。

+4

坏坏不好,不要将您的购物车清单保存在cookies上,请将您的购物车清单保存在连接到cookie的数据库中。饼干是有限的,你可以在所有页面中进行,他们可以操纵破坏你的商店。 – Aristos

回答

8

您可以使用模板领域:

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

,并在你的C#代码后面你创建你的GridView的下列事件,做你想要什么:

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

GV是的ID我网格视图 !

+0

非常感谢,现在就开始工作吧! – stevanov

+0

你非常欢迎! – Karamafrooz