不用id也可以计算,在需要计算的文本框加上 onpropertychange="total(this);"
function total(obj) {
var table = obj.parentNode.parentNode.parentNode;
var totalcount = 0;
var totalprice = 0;
for (var i = 1, l = table.children.length; i < l; i++) {
var tr = table.children[i];
var count = parseInt(tr.childNodes[1].children[0].value);
var price = parseInt(tr.childNodes[2].children[0].value);
if (!isNaN(count) && !isNaN(price)) {
var total =count * price;
totalcount +=count;
totalprice += price;
tr.childNodes[4].children[0].innerHTML = total;
}
}
document.getElementById("总计的ID").value = totalcount;
document.getElementById("门票的ID").value = totalprice;
}
由于 gridview 生成的 html 可能会不一样。这个只是给你参考
这个需要前端编写JavaScript来实现
1.GridView外面放个updatepanel
文本框设置textchange事件,然后遍历所有数量文本框的值,把最新的数量显示出来即可。
2.或者用js实现。
这个文本框是放在GridView里面了,我都加不上事件- -
@HuangChengYuan: 你可以在页面上先放个文本框,然后双击把页面生成的代码和c#后台的代码都复制过去就行了!
@HuangChengYuan: 用js实现起来太简单不过了。最好用Repeater,没有多余的html代码。
文本框失去焦点,你写个js方法,遍历整个table,jquery 操作dom,价格的文本框class为"price",你可以通过$('.price')得到当前行价格。数量不用我说了吧。每行的价格乘以数量,然后相加就是总额。
那就给每个数量的文本框加入 onblur事件,当失去焦点时,然后把价格加入到总计里,是要编写JS的
我就是在纠结这个JS该怎么写,我都获取不到GridView里面数量的文本框的ID
@HuangChengYuan: 怎么可能获取不到呢?GridView里面子控件ID都是通过一种特定的机制生成的,所以,在JS里面要取到的话,要用到控件的ClientID。
@叶小党: 对呀 我在JS里面取得时抛出上下文中找不到控件,var count = document.getElementById("<%=Count.ClientID %>").Text;
@HuangChengYuan: 看一下html代码,看一下Count的ID最后是什么,然后看一下<%=Count.ClientID %>又被解析成了什么,看是否一致
用JS来搞定吧
js搞定,如果需要,我可以给你写个例子
恩嗯 给我个例子吧
谢谢
里面的那TextBox 你可以设置一个唯一的值:
然后用Jquery 获取值。。
可以在绑定之前进行计算。