实现如下功能:
在dataGrid中修改支付数量,调用后台方法计算出合价
为了避免频发调用后台方法,使用onPost 事件触发;
获取单价使用的是获取当前行数据的方法,如果修改后点击到其他行,则会取到错误数据,故在onFocus事件中先取到当前数据;
如果数字前面有0,self会将0自行去掉,修改自身text内容,这时再次触发onPost事件,导致连续重复调用错误:
解决方法如下
/** @Bind #tePayCount.onFocus */
!function(self,args)
{
//将第一次点击的行保存在userData中
//点击其他行时会先完成当前onPost再进行下一个onFocus
self.set(“userData”,view.get("#dsContractDetail.data:#"));
}
/** @Bind #tePayCount.onPost */
!function(self,args)
{
var data = self.get(“userData”);
var price = data.get(“price”);
var payCount = self.get(“text”);
//判断正整数正则表达式
var re = /1+$/ ;
//避免输入非正整数的情况
if(!re.test(payCount))
{
dorado.MessageBox.alert(“请输入正整数!”);
return;
}
//如果数字前面有0,self会将0自行去掉,再次触发onPost事件,导致重复调用错误
if(payCount.substring(0,1) == 0)
{
//修改text值,此时会再次触发onPost 事件
self.set(“text”,~~payCount);
return;
}
view.get("#getContractDetailAmount")
.set(“parameter”,{“payCount” : payCount,
“price” : price })
.execute(function(result){
data.set(“amount”,result);
});}
0-9 ↩︎