如何在 Webix 数据表中的多个选定行上应用通用下拉值

How to apply a common dropdown value on multiple selected rows in a Webix datatable

我需要帮助将常用下拉值应用于 Webix 数据table 中的多个 selected 行。假设我想 select 我的数据的所有行 table(通过 Ctrl+单击)'Name' 列的值为 'Mark',然后想应用一个通过单击为它们添加通用颜色(例如:绿色),以便一次将其应用于所有行。

片段在这里:https://webix.com/snippet/1162ccd1

任何有关如何实现这一目标的帮助将不胜感激。

提前致谢。

除此 post 之外,我在下面包括了一个重新措辞和半途而废的解决方案,以供专家们消除对该要求的任何困惑:

不一定是 'Name' 为 'Mark' 的那些行。我这样说是为了举个例子。基本上,它可以是任何随机 selected 连续或随意的行,并且 select 从 'color' 列的下拉列表中为它们设置一个共同值(它可以是其中的任何颜色下拉 ) 以便它的值被分配给那些 selected 行的那些单元格。请注意,select设置颜色不应更改行的颜色,因此此处没有我想要的 css 效果。

到目前为止,我已经编写了如下代码,它能够获取 selected 行。

rows = $$("mytable").getSelectedId(true);

for (i in rows) {
    id = rows[i];
    item = $$("mytable").getItem(id);

    /* below effect has to happen from the drop down of data table gui */
    item.id2 = "green"; //for example, it could be any value
  }

任何人都可以帮助我:

i) 如何将数据 table 下拉列表中的值 selected 应用到所有 selected 行?

ii) 其次,一旦它们被 select 编辑到数据 table 中并从下拉列表中选择值,我如何触发此代码(通过哪个事件?)?

谢谢。

您可以通过添加 onBeforeFilter 事件来执行类似的操作,并仅跟踪颜色过滤器(代码段中的 "id2"):

    onBeforeFilter: function(id, value, config) {
      if (id === "id2") {
      const selected = this.getSelectedId(true);
      const color = this.getFilter("id2").value;
        for (let row in selected) {
          const item = this.getItem(selected[row]);
          item["id2"] = color;
          this.updateItem(item.id, item);
        }
      }
   }

样本在这里https://webix.com/snippet/538e1ca0

但我认为这不是最好的方法。

您还可以通过右键单击 table 并在其中选择值来创建上下文菜单。