SOS!!!!史上最大迷思!求助在按钮事件里面获取repeater里数据!!!
--------------------编程问答-------------------- 每次你的标题最雷人, --------------------编程问答-------------------- 优惠券的ID和数量 在当前表单里应该是有体现的,那么在点击的时候传递过去就可以了 --------------------编程问答--------------------不带这样站着说话不腰疼的···亲······ --------------------编程问答-------------------- 放2个Literal控件,绑定ID跟数量
然后在按钮事件里面循环Repeater的Item找控件 --------------------编程问答--------------------
能具体一点吗····
伦家不会写·········· --------------------编程问答--------------------
洒家硬是没看懂.. --------------------编程问答-------------------- 用LinkButton OnCommand,设置CommandName,CommandArgument,在CS中通过参数e的获得上面的属性
也可以重写Repeater的OnItemDataBound事件 --------------------编程问答-------------------- http://www.cnblogs.com/ANDY_ZHANG/archive/2010/11/08/1872050.html --------------------编程问答-------------------- for (int i = 0; i < detailrepeater.Item.Count; i++)
{
Literal ltID = detailrepeater.Item[i].FindControl("ltID") as Literal;
Literal ltNum = detailrepeater.Item[i].FindControl("ltNum") as Literal;
}
--------------------编程问答-------------------- <li class="li_2">
<asp:Literal ID="ltID" runat="server" Text=' <%#Eval("优惠卷ID")%>' Visible="false" ></asp:Literal>
<asp:Literal ID="ltNum" runat="server" Text=' <%#Eval("数量")%>' Visible="false" ></asp:Literal>
<%#Eval("name")%></li>
加入购物车按钮里面写
for (int i = 0; i < detailrepeater.Item.Count; i++)
{
Literal ltID = detailrepeater.Item[i].FindControl("ltID") as Literal;
Literal ltNum = detailrepeater.Item[i].FindControl("ltNum") as Literal;
}
--------------------编程问答--------------------
去试试先,辛苦啦! --------------------编程问答--------------------
这个数量不是直接从数据库读出来就行 用户可以直接点加或者减的 --------------------编程问答-------------------- 那你就获取文本里面的值 --------------------编程问答--------------------
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < detailrepeater.Item.Count; i++)
{
Literal ltID = detailrepeater.Item[i].FindControl("ltID") as Literal;
Literal ltNum = detailrepeater.Item[i].FindControl("ltNum") as Literal;
}
}
是在按钮事件里面这样写吗?
说是这控件不包含item定义··· --------------------编程问答-------------------- Items````````我是笨笨···· --------------------编程问答-------------------- 要获取Reapter中的控件可以在Reapter的ItemDataBound事件中得到 --------------------编程问答-------------------- 随笔啊你怎么写都是可以的
只要对于每一行有相应具有唯一性ID就可以
把这个ID绑在模板列中一个隐藏域中 --------------------编程问答-------------------- 没有说完 继续。
添加repeater的rowCommand事件
按钮添加commandName属性,在RowCommand事件中作为判断依据
在时间中首先找到你点击的这行,比如
RepeaterItem item = (RepeaterItem)((Button)e.CommandSource).Parent.Parent;
然后用item的findControl方法找到你存储唯一ID的隐藏域
后面就可以操作了
--------------------编程问答-------------------- 现在我的问题是获取不到当前优惠券的数量
数量的获取和赋值是在js里面的
<li class="li_4">
<asp:HiddenField ID="ltNum" runat="server" />
<p class="sp1">
我要买 :</p>
<a class="cut" href="javascript:void(0)" price="<%#Eval("Price")%>" yuanjia="<%#Eval("YuanJia")%>">
</a><span class="sp2" id='sp_<%#Eval("ID") %>'>1</span> <a class="add" href="javascript:void(0)"
price="<%#Eval("Price")%>" yuanjia="<%#Eval("YuanJia")%>"></a></li>
点点击加减的时候触发这个js事件
// 购物数量增加减少
$(function() {
$(".cut").click(function(event) {
var num = Number($(this).parent().find('span').html());
var price = parseFloat($(this).attr("price"), 10);
var account = parseFloat($("#heji").text(), 10);
var account2 = parseFloat($("#yixuan").text(), 10);
var price2 = parseFloat($(this).attr("yuanjia"), 10);
if (num <= 1) {
$(this).parent().find('span').html(1);
$(this).parent().find('hidden').eq(0).val(1);
}
else {
$(this).parent().find('span').html(num - 1);
$("#heji").text(account - price);
$("#yixuan").text(account2 - price2);
$(this).parent().find('hidden').eq(0).val(num - 1);
// alert($(this).parent().find('hidden').eq(0).val());
}
});
});
$(function() {
$(".add").click(function(event) {
var num = Number($(this).parent().find('span').html());
var price = parseFloat($(this).attr("price"), 10);
var account = parseFloat($("#heji").text(), 10);
var account2 = parseFloat($("#yixuan").text(), 10);
var price2 = parseFloat($(this).attr("yuanjia"), 10);
$(this).parent().find('span').html(num + 1);
$("#heji").text(account + price);
$("#yixuan").text(account2 + price2);
$(this).parent().find('hidden').eq(0).val(num + 1);
// alert($(this).parent().find('hidden').eq(0).val());
});
});
在这里为隐藏域赋值了,值没有赋值进去,在按钮事件里面,获取不到值!!
求教求教!!!!!
--------------------编程问答--------------------
以上问题请教啊! --------------------编程问答-------------------- 怎么叫做在按钮事件里获取不到值?是找不到这个控件,还是获取的值不对(总是1?)
--------------------编程问答-------------------- 什么是易做图上最大迷思,我晕,这么基本操作的也喊得那么恐怖
你就差别人给你现成的代码了。
10楼的朋友已经给出了解决办法了
在按钮事件里面写就是了 --------------------编程问答--------------------
取到的值是空的, $(this).parent().find('hidden').eq(0).val(1);
在js里面赋值的时候就没赋进去
我想问的是,为什么这句话没给隐藏域赋值赋进去? --------------------编程问答--------------------
我写了出现了问题啊!你有什么资格这样说我! --------------------编程问答--------------------
说你还需要资格?你不懂,别人说你就受不了?说你几下你损失什么了?
什么是虚心学习?你这心态···切
感情好像你写了出问题是别人的错是吧 --------------------编程问答--------------------
我问你了吗?我在请教别人,你又给不了我实质性的帮助,你有什么资格在旁边唧唧歪歪的?
我对那些真心诚意帮我的人,态度心态肯定是绝对的虚心和感谢,但是你算什么?
我写出了问题就还要再来问啊?我说了是别人的错吗?
你算个什么东西?
看不惯我就不要进来唧唧歪歪,如果你没有白内障的话,这是我发的帖子,好吗? --------------------编程问答-------------------- 现在我的问题就是
怎样用js给Repeater里面的隐藏域赋值
因为隐藏域放在repeater里面以后ID都变了,不能直接获取ID来赋值。
请教各位!!!谢谢!!! --------------------编程问答-------------------- clientID --------------------编程问答--------------------
var sel=repeater.getElementsByTagName("input");
for(var i=0;i<sel.length;i++)
{
if(input.type == "hidden" && inputs[i].id.match("rrr"))
{
alert(sel[i].id);
}
}
<input type="hidden" id="rrr" runat="server" /> --------------------编程问答-------------------- if(input.type == "hidden" && inputs[i].id.match("rrr"))
==>if(sel.type == "hidden" && sel[i].id.match("rrr")) --------------------编程问答--------------------
前面那么多答案,已经足够了,是你不懂,怪谁?
你不懂,说你几下你损失什么了?那么小气干鸟
----------
"因为隐藏域放在repeater里面以后ID都变了"你就不试试用name属性,使用ajax的post方法赋值,并Request.Form取值? --------------------编程问答-------------------- var sel=document.getElementById("XXXX").getElementsByTagName("input");
for(var i=0;i<sel.length;i++)
{
if(sel[i].type == "hidden" && sel[i].id.match("rrr"))
{
alert(sel[i].id);
}
}
<input type="hidden" id="rrr" runat="server" />
好了这样可以了。刚才有点问题。 --------------------编程问答--------------------
好吧 其实是我问题拖了很久没解决 心情比较烦躁 其实你也没说我什么
不好意思
你也知道的 唯小人与女子难养也 --------------------编程问答-------------------- var ltNum =document.getElementById("<%=ltNum.ClientID%>"); --------------------编程问答-------------------- 你是要赋值数量吗,在 "+","-"a标签上写click事件,然后将隐藏域放在一个好点的位置,比如"+","-"a标签的后面,click赋值的时候就是$(this).next()就获取隐藏域的dom元素了。 --------------------编程问答-------------------- $(this).parent().find(':hidden').eq(0).val(num + 1);
加冒号就行了
谢谢你们!!! --------------------编程问答-------------------- submit表单吧 --------------------编程问答-------------------- 以为什么呢!还想长见识呢..乱叫 --------------------编程问答-------------------- 楼主标题写得不错。 --------------------编程问答-------------------- 亲爱的,这就是cookies加ajax处理哦.http://www.school51.com/Sell/shoppingcart.aspx先添加几个商品,然后在这个页面看看,所有操作前端源码都在“页面源文件”里面包括js处理价格计算 --------------------编程问答-------------------- 飘过飘过!!!
补充:.NET技术 , ASP.NET