填报,根据填报的数量,获取列。。

如下图,这是原始的,填写数量,还要在复选框控件打钩,对应商品则传递到另表中,,


现在想,只通过判断填写了数量,就将对应商品传递过去,省了选择,而且速度也快了。

控件太影响运行速度。


有大神帮忙改改吗?

图片.png

完整代码如下:

if (window.checkboxes) {
    var pCode = []; // 创建数组,用于记录被选中行的产品ID
    var pName = []; // 创建数组,用于记录被选中行的产品名称
    var pValue = []; // 创建数组,用于记录被选中行的单价
    var pCnt = []; // 创建数组,用于记录被选中行的数量
    var parentLocation = parent.window.pLocation; // 获得父页面产品代码文本框控件里赋值的window.pLocation
    var col = FR.cellStr2ColumnRow(parentLocation).col;
    var row = FR.cellStr2ColumnRow(parentLocation).row; // FR.cellStr2ColumnRow是帆软现有的方法,用途是把形如A1这样的单元格号转换成形如{col:0,row:0}这样的对象,这里把对象的col、row属性值分别赋予变量col、row,便于定位父页面的单元格,回填数据
    for (var i = 0; i < checkboxes.length; i++) { // 循环遍历复选框对象数组checkboxes
        var checked = checkboxes[i].selected(); // selected()是帆软现有的方法,判断是否被选中
        if (checked) {
            var cr = FR
                .cellStr2ColumnRow(window.checkboxes[i].options.location);
            pCode.push(contentPane.getCellValue(cr.col + 2, cr.row)); // 如果当前行复选框被选中,则把列号+2,获取该行产品ID的值,添加到数组pCode的尾部
            pName.push(contentPane.getCellValue(cr.col + 3, cr.row)); // 如果当前行复选框被选中,则把列号+2,获取该行产品ID的值,添加到数组pCode的尾部
            pValue.push(contentPane.getCellValue(cr.col + 4, cr.row)); // 如果当前行复选框被选中,则把列号+2,获取该行产品ID的值,添加到数组pCode的尾部
            pCnt.push(contentPane.getCellValue(cr.col + 7, cr.row)); // 如果当前行复选框被选中,则把列号+2,获取该行产品ID的值,添加到数组pCode的尾部
        }
    }
    parent.contentPane
        .appendReportRC(pCode.length - 1, parent.window.pLocation); // appendReportRC(插入行数,单元格号)是帆软现有方法,功能是插入行。parent.contentPane.appendReportRC就是向父页面插入行。由于父页面A5已经有一行了,这里就需要把选中复选框的个数pCode.length减去1

    setTimeout(function() { // 延时100毫秒,由于父页面插入行有一个页面重载的过程,需要加延等父页面重载完成后,再对父页面回填数据。具体延时多少毫秒,依据父页面复杂程度适当调整
        for (var i = 0; i < pCode.length; i++) {
            var cellStr = FR.columnRow2CellStr({
                col: col,
                row: row + i
            }); // columnRow2CellStr是帆软现有方法,作用是把形如{col:0,row:0}的对象转成形如A1这样的单元格号
            parent.contentPane.setCellValue(cellStr, null, pCode[i]); // 循环遍历pCode数组,把数组元素回填父页面相应的单元格
        }
        for (var i = 0; i < pName.length; i++) {
            var cellStr = FR.columnRow2CellStr({
                col: col + 1,
                row: row + i
            }); // columnRow2CellStr是帆软现有方法,作用是把形如{col:0,row:0}的对象转成形如A1这样的单元格号
            parent.contentPane.setCellValue(cellStr, null, pName[i]); // 循环遍历pCode数组,把数组元素回填父页面相应的单元格
        }
        for (var i = 0; i < pValue.length; i++) {
            var cellStr = FR.columnRow2CellStr({
                col: col + 2,
                row: row + i
            }); // columnRow2CellStr是帆软现有方法,作用是把形如{col:0,row:0}的对象转成形如A1这样的单元格号
            parent.contentPane.setCellValue(cellStr, null, pValue[i]); // 循环遍历pCode数组,把数组元素回填父页面相应的单元格
        }
        for (var i = 0; i < pCnt.length; i++) {
            var cellStr = FR.columnRow2CellStr({
                col: col + 3, //商品编号向右第5列
                row: row + i
            }); // columnRow2CellStr是帆软现有方法,作用是把形如{col:0,row:0}的对象转成形如A1这样的单元格号
            parent.contentPane.setCellValue(cellStr, null, pCnt[i]); // 循环遍历pCode数组,把数组元素回填父页面相应的单元格
        }
        parent.FR.closeDialog();
        parent.FR.destroyDialog();
        // 调用父页面的closeDialog和destroyDialog关闭销毁本子页面
    }, 500);

}


FineReport twshe 发布于 2019-4-29 11:28
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
孤陌Lv6资深互助
发布于2019-4-29 12:33(编辑于 2019-4-29 12:37)

那你 复选框控件值设置true就好了啊  默认全部勾上就好了

不然就只能是填写数据的控件 写编辑结束事件  给控件赋值TRUE

  • twshe twshe(提问者) 嗯。谢谢。对JS理解不够,能帮忙写个填写数量了,给复选框赋值TRUE的JS吗?
    2019-04-29 13:11 
最佳回答
0
祈LLv6中级互助
发布于2021-3-24 15:24

麻烦能发一下这个模版给我吗,我想看一下具体的设置

  • 5关注人数
  • 1188浏览人数
  • 最后回答于:2021-3-24 15:24
    请选择关闭问题的原因
    确定 取消
    返回顶部