填报问题

点击计划下发,要给任务状态的下拉框为空的赋值1(实际值),js提示是对了,但是没有插值成功90.png

// 获取当前按钮的位置信息(标题栏)

var location = this.options.location;

var btnCr = FR.cellStr2ColumnRow(location);

console.log("按钮位置(标题栏):", btnCr);

// 获取表格内所有下拉框控件

var temp = "";

var arr =contentPane.getWidgetsByName("comboBox0");

console.log("找到的下拉框总数:", arr.length);

// 检查下拉框数组是否存在且有元素

if (arr && arr.length > 0) {

    // 遍历所有下拉框

    for (var i = 0; i < arr.length; i++) {

        var currentValue = arr[i].getValue();

        console.log("值",currentValue);

        // 如果值为空,则设置为1

        if (currentValue === null || currentValue === undefined || currentValue === "") {

            arr[i].setValue(1);

            temp += "第" + (i + 1) + "个下拉框已设置为1; ";

        } else {

            temp += "第" + (i + 1) + "个下拉框值为: " + currentValue + "; ";

        }

    }

} else {

    // 当没有找到下拉框时的处理

    temp = "未找到下拉框控件";

    // 如果需要在没有下拉框时创建或设置默认值,可以在这里添加逻辑

    // 注意:通常getWidgetsByName返回空数组表示没有找到控件,无法直接设置值

}

// 显示处理结果

alert(temp);

// 刷新报表使更改生效

setTimeout(() => {

    _g().refreshAllSheets();

}, 100);

    

FineReport Kennethq 发布于 7 天前
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
ScyalcireLv7高级互助
发布于7 天前(编辑于 7 天前

几个原因:

  1. 控件获取方式不准确contentPane.getWidgetsByName("comboBox0")可能未正确定位到所有目标下拉框控件,尤其是动态生成的或嵌套在单元格内的控件。

  2. 赋值时机问题下拉框的值可能在赋值后未及时触发数据提交事件,导致前端显示与实际值不同步。

  3. 刷新机制不完善_g().refreshAllSheets()的100ms延迟可能不足以确保所有控件完成渲染

-----------------

// 获取当前按钮的位置信息(标题栏)
var location = this.options.location;
var btnCr = FR.cellStr2ColumnRow(location);
console.log("按钮位置(标题栏):", btnCr);
// 获取表格内所有下拉框控件(兼容数据集控件)
var temp = "";
var arr = contentPane.getWidgetsByType("comboBox");
console.log("找到的下拉框总数:", arr.length);
// 检查下拉框数组是否存在且有元素
if (arr && arr.length > 0) {
    // 遍历所有下拉框
    for (var i = 0; i < arr.length; i++) {
        var currentValue = arr[i].getValue();
        console.log("值", currentValue);
        
        // 如果值为空,则通过单元格赋值并触发事件
        if (currentValue === null || currentValue === undefined || currentValue === "") {
            // 获取下拉框绑定的单元格坐标
            var cellRange = arr[i].getCellRange();
            if (cellRange) {
                // 直接赋值给单元格
                contentPane.setCellValue(cellRange.startColumn, cellRange.startRow, 1);
                temp += "第" + (i + 1) + "个下拉框(单元格" + cellRange + ")已设置为1; ";
            } else {
                temp += "第" + (i + 1) + "个下拉框无法获取单元格坐标; ";
            }
        } else {
            temp += "第" + (i + 1) + "个下拉框值为: " + currentValue + "; ";
        }
    }
} else {
    temp = "未找到下拉框控件";
}
// 显示处理结果
alert(temp);
// 优化刷新逻辑
setTimeout(() => {
    contentPane.getWorkbook().refresh();
    setTimeout(() => {
        console.log("二次刷新确认");
    }, 50);
}, 100);

  • Kennethq Kennethq(提问者) 还是不行 我是不是应该给单元格赋值呢
    2025-09-01 17:21 
  • Scyalcire Scyalcire 回复 Kennethq(提问者) 试一下单元格赋值方式的JS
    2025-09-01 17:28 
  • Scyalcire Scyalcire 回复 Kennethq(提问者) 确认下拉框是否为comboBox或数据集控件
    2025-09-01 17:29 
  • 2关注人数
  • 35浏览人数
  • 最后回答于:7 天前
    请选择关闭问题的原因
    确定 取消
    返回顶部