|
楼主 |
发表于 2017-6-15 17:05:18
|
显示全部楼层
我用的是dataTables组件,多选改变数据的代码是写在dataTables的onRowChecked里,全选改变数据的代码写在onRowCheckedAll里。现在问题是,多选 选中行的数据不一定会改变当前行,全选 选中行只改变第一行的数据。
多选:
Model.prototype.listDataRowChecked = function(event){
var mainData = this.comp("mainData");
var discountData = this.comp("DiscountData");
var table=this.comp('listData');
var checkedIDs=table.getCheckeds();
if (discountData.val("fDiscount") != 0 && discountData.val("fDiscount") != "") {
var row = event.row;
if(this.comp('listData').isChecked(row)){
mainData.setValue("fDisPrice", mainData.getValue("fPrice") * discountData.val("fDiscount") / 100);
mainData.setValue("fDiscount", discountData.val("fDiscount"));
}
}
};
全选:
Model.prototype.listDataRowCheckedAll = function(event){
var mainData = this.comp("mainData");
var discountData = this.comp("DiscountData");
var table=this.comp('listData');
var checkedIDs=event.source.getCheckeds();
if(checkedIDs.length==0){//全不选
this.comp("mainData").each(function(obj){
if(obj.index%2==0){
table.setRowCss(obj.row,{"backgroundColor":"#f9f9f9"});
} else {
table.setRowCss(obj.row,{"backgroundColor":"#fff"});
}
});
} else {//全选
for(var i=0; i<checkedIDs.length; i++){
table.setRowCss(checkedIDs,{"backgroundColor":"#93dffe"});
mainData.setValue("fDisPrice", mainData.getValue("fPrice") * discountData.val("fDiscount") / 100);
mainData.setValue("fDiscount", discountData.val("fDiscount"));
}
}
}; |
|