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

时间:2017-07-04 15:22:31

标签: datatable webix

我需要帮助将常用下拉值应用于Webix数据表中的多个选定行。让我们说我想选择我的数据表的所有行(通过Ctrl +点击),其名称为' Name'列的值为'标记'然后想要通过单击为它们应用常用颜色(例如:绿色),以便一次性应用于所有行。

该代码段位于:https://webix.com/snippet/1162ccd1

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

提前致谢。

在这篇文章之后,我将在下面提供一个重新措辞和一个中途解决方案,以便专家消除对该要求的任何混淆:

它不一定是那些具有' Name'作为' Mark'。我这样说是一个例子。基本上,它可以是任意随机选择的行,无论是连续的还是随意的,并从“颜色”的下拉列表中为它们选择一个共同的值。列(它可以是该下拉列表中的任何颜色),以便将其值分配给那些选定行的那些单元格。注意,选择一种颜色不应该改变行的颜色,所以这里没有我想要的CSS效果。

我到目前为止编写了如下代码,它可以获取所选行。

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)如何将从数据表下拉列表中选择的值应用于所有选定的行?

ii)其次,如何在数据表中选择并从下拉列表中选择值后,如何触发此代码(通过哪个事件?)?

感谢。

1 个答案:

答案 0 :(得分:1)

你可以通过添加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

但我认为这不是最佳方式。

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