2011-12-07 72 views
0

我有一个产品列表的gridview,需要将这些添加到一个JavaScript购物车。使用下面的代码 这个完美的作品:Javascript购物车帮助需要

<a href="javascript:;" onclick="simpleCart.add('name=<%# Eval("Name") %>' , 'price=<%# Eval("Price") %>' , 'quantity=1');">Add To Cart</a> 

不过,我也需要执行,当一个产品被添加到购物车一些服务器端功能,所以我想用一个按钮来替换上面并调用的onClick和的OnClientClick的像这样:

<asp:Button ID="AddCartButton" runat="server" Text="Add To Cart" onClick="AddCartButton_Click" OnClientClick="AddItem()" /> 
       <script type="text/javascript"> 
        function Additem() { 
         javascript: simpleCart.add('name=<%# Eval("Name") %>', 'price=<%# Eval("Price") %>', 'quantity=1'); 
        }  
    </script> 

这不会产生任何错误,但JavaScript的似乎并没有工作(因为没有产品被添加到购物车),但是服务器端代码是否正确执行。

+0

一旦物品添加到购物车中,您是如何向服务器发送消息的? –

+0

是的,该按钮将导致回发,除非数据网格ID阿贾克斯启用,客户端调用是真的毫无意义。 – Zoidberg

+0

购物车完全在JavaScript中完成,我从http://simplecartjs.com/获得。但我也需要添加服务器端功能(访问数据库),并且这样做似乎是最简单的方法,因为我知道一些C#但是对于asp.net/javascript等是全新的。 – Matt

回答

0

我只好到的OnClientClick改成这样:

<asp:Button ID="AddCartButton" runat="server" Text="Add To Cart" onClick="AddCartButton_Click" 
    OnClientClick='<%# Eval("Name", "AddItem(\"{0}\", ").ToString() + Eval("Price", "\"{0}\")").ToString() %>' /> 

而且功能:

<script type="text/javascript"> 
       function Additem(name, price) { 
        javascript: simpleCart.add('name=' + name, 'price=' + price, 'quantity=1'); 
       }  
      </script> 

正如Samich在上面提供的。

1

在你的情况下,你正在创建许多全局函数,它将只用于最新的一个。提供带有参数的数据并在页面上声明一次。

更改为:

<asp:Button ID="AddCartButton" runat="server" Text="Add To Cart" onClick="AddCartButton_Click" OnClientClick="AddItem('<%# Eval("Name") %>', '<%# Eval("Price") %>')" /> 

和数据boundind之外:

  <script type="text/javascript"> 
       function Additem(name, price) { 
        javascript: simpleCart.add('name=' + name, 'price=' + price, 'quantity=1'); 
       }  
      </script> 
+0

由于您首先发布了这个,我会删除我的答案。 – Zoidberg

+0

我现在收到以下错误: '/'应用程序中的服务器错误。 解析器错误 描述:解析服务此请求所需的资源时发生错误。请检查以下特定的分析错误详细信息并适当修改您的源文件。 解析器错误消息:服务器标记格式不正确。 – Matt

+0

尝试将属性更改为以下内容:'OnClientClick ='<%#“AddItem(”+ Eval(“Name”)+“,”+ Eval(“Price”)+“);” %>'' – Samich