我有一个包含产品列表的gridview,需要将这些添加到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 :(得分: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>
答案 1 :(得分: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上面提供的那样。