需求如下: 1、在记录列表里,批量删除只允许在查看具体人员的记录时才允许批量删除; 2、查询所有记录时批量按钮不可用; 3、多条记录时,操作日期最大的记录不允许删除; 4、若记录只有一条不允许删除 功能实现: 对操作日期的扩展控件进行遍历查找出最大值,对于勾选复选框对应的操作日期组成的数组,如果包含最大值,则删除按钮不可用,反之删除按钮可用。。。 现在有个问题,最大值刷新后会变化,如图: 第一次访问时是正常的: 刷新后就变成: 以下是我写的代码: //建立json数组 var op = _g().getWidgetsByName("opdate"); var json = new Array(); if (typeof(op[0]) != "undefined") { for (i = 0; i < op.length; i++) { var oprow = FR.cellStr2ColumnRow(op[i].options.location).row; //获取行号 var opcol = FR.cellStr2ColumnRow(_g().getWidgetByName("opdate").options.location).col; var value = _g().getCellValue(0, opcol, oprow); json.push(value); } }else { var oprow = FR.cellStr2ColumnRow(_g().getWidgetByName("opdate").options.location).row; //获取行号 var opcol = FR.cellStr2ColumnRow(_g().getWidgetByName("opdate").options.location).col; var value = _g().getCellValue(0, opcol, oprow); json.push(value); } //获取日期型数组json的最大值: Array.prototype.max = function() { var max = this[0]; this.forEach(function(ele, index, json) { if (ele > max) { max = ele; }else{max=ele;} }) return max; } datemax = json.max(); //alert(datemax); //根据勾选生成操作日期数组 var boxes = _g().getWidgetsByName("box"); var oparr = new Array(); var delarr = new Array(); if (typeof(boxes[0]) != "undefined") { for (i = 0; i < boxes.length; i++) { if (boxes[i].getValue() == true) { var row = FR.cellStr2ColumnRow(boxes[i].options.location).row; //获取行号 var col = FR.cellStr2ColumnRow(_g().getWidgetByName("opdate").options.location).col; //获取列号 var opvalue = _g().getCellValue(0, col, row); var delvalue=boxes[i].getValue(); //alert(opvalue); //如果控件大于1个,则遍历修改选中行当前列的值 oparr.push(opvalue); delarr.push(delvalue); } } } else { if (boxes.getValue() == true) { var row = FR.cellStr2ColumnRow(boxes.options.location).row; //获取行号 var col = FR.cellStr2ColumnRow(_g().getWidgetByName("opdate").options.location).col; //获取列号 var opvalue = _g().getCellValue(0, col, row); //如果控件只有1个,则直接判断是否选中,选中的话修改当前列的值 var delvalue=boxes.getValue(); oparr.push(opvalue); delarr.push(delvalue); } } //根据条件让按钮是否可用 if (oparr.indexOf(datemax) > -1 || delarr==false || name.length==0) { contentPane.getWidgetByName("del").setEnable(false); } else { contentPane.getWidgetByName("del").setEnable(true); } ----------------------- 经过测试发现,这种现象会出现在个别记录里,并不是所有的,郁闷了,我是用姓名作为参数查询的,当发现前端日期不是最大时,不断点击查询后,又恢复正常了;对于异常的记录,通过ALERT查问题,发现数组个数老是变化,如果日期组成的数组个数不变的话,是没有问题的。 我通过参数过滤来的数据,对应的数组不固定吗??不知道有谁遇到过这个问题,测试了好久也没结果。。。但90%的记录测试是没问题的,有问题的记录还是少数,就更郁闷了 ------------------------ 通过查询获取的时间组成的数组,其个数为何有时会变化呢。。 var op = _g().getWidgetsByName("opdate"); var num=op.length; alert(num); 此时数组的个数num有时会变化,甚至会出现undefined 有谁能解释一下呢,在线等。。。。。。 --------------------------- --------------------------------- |