日期:2014-05-18  浏览次数:20480 次

问个问题 关于repeater内textbox textchange事件的问题
现在我的Repeater内每一行里有3个textbox控件 我想问一下 怎么才能实现利用textchange事件使第3个控件得到前2个控件之和。。。困难在于不好确定是哪行。。。谢谢各位帮助了

------解决方案--------------------
给你个思路,建议最好不要使用textchanged后台事件,这样每次输入都会产生刷新是让人很不爽的,当然使用ajax例外。

1 在repeater的ondatabound事件里面进行js绑定

2 绑定类似如下代码(大小写和客户端事件名称你自己注意核对准确)
TextBox text1 = e.Item.Findcontrol('text1');
TextBox text2 = 类似同上;
TextBox text3 = 类似同上;
text1.attributes.add("onchange","caculate('"+text1.clientid+"','"+text2.clientid+"','"+text3.clientid+"');");
text2.attributes.add("onchange","caculate('"+text1.clientid+"','"+text2.clientid+"','"+text3.clientid+"');");

3 前台添加如下js方法
提示:1 .textbox1,2的值获取后可能需要处理一下的情况不仅仅是为空,你自己要多测试下
2 .累加赋值前最好将tb1value和tb2value转化成数值型!
caculate(tb1,tb2,tb3)
{
var tbcontrol1 = docuement.getElementById(tb1);
var tbcontrol2 =.....类似上面
var tbcontrol3 = ....类似上面

var tb1value = tbcontrol1.value;
var tb2value = tbcontrol2.value;

if(tb1value == "") 
tb1value = 0;
if(tb2value == "")
tb2value =0;
tbcontrol3.value = tb1value + tb2value;
}