代码之家  ›  专栏  ›  技术社区  ›  Jason Bourne

如何按列值动态选择交互式网格行

  •  0
  • Jason Bourne  · 技术社区  · 1 年前

    我目前希望能够通过将列值的csv传递给JS代码动态操作来动态选择交互式网格的行。这是我目前掌握的代码

    var columnName = 'CRITERIA_ID';
    var targetValues = $v("P13_SELECTED_VALUES").split(";");
    //P13_SELECTED_VALUES is set to 112:113:115 via a static assignment DA that occurs directly before this 
    console.log(targetValues[1]);
    console.log(targetValues[2]);
    console.log(targetValues[3]);
    
    var ig$ = apex.region("myIG_StaticID").widget();
    var view = ig$.interactiveGrid("getCurrentView");
    
    view.model.forEach(function(record) {
      var columnValue = view.model.getValue(columnName, record);
      console.log("Column Value: " + columnValue);
    
      if (targetValues.includes(columnValue)) {
        view.grid.selection.add(record);
      }
    });

    运行此操作时,我不会在控制台中收到任何错误,但不会发生任何选择。这个 console.log 我添加的行确实会被触发,但在每一种情况下,它们不是输出变量,而是输出“未定义”。这包括的值 targetValues 数组和的输出 columnValue 稍后在循环中。

    任何帮助都将不胜感激,即使它能让我输出我试图与我的 console.log 命令。

    1 回复  |  直到 1 年前
        1
  •  0
  •   Karel Ekema    1 年前

    我认为你已经很接近了——我所看到的你需要两个小的改变:

    1. 以零开始索引:

      console.log(targetValues[0]); console.log(targetValues[1]); console.log(targetValues[2]);

    2. 先通过记录:

      var columnValue=view.model.getValue(记录,columnName);

    编辑:再编辑一个:

    let recordSelection = [];
    view.model.forEach(function(record) {
      var columnValue = view.model.getValue(record, columnName);
      console.log("Column Value: " + columnValue);
    
      if (targetValues.includes(columnValue)) {
        recordSelection.push(record);
      }
    });
    view.setSelectedRecords(recordSelection);