【问题标题】:Handsontable Select2 Dependent DropdownsHandsontable Select2 相关下拉列表
【发布时间】:2015-10-19 21:19:59
【问题描述】:

我有两个 select2 下拉菜单,我想根据第一个下拉菜单更改第二个下拉菜单的选项。

例如,

        {
          data: 'country_id',
          editor: 'select2', 
          renderer: customDropdownRenderer,
          select2Options: { 
                  data: {!! $production_units !!} ,
                  dropdownAutoWidth: true,
          }
        },
        {
          data: 'state_id',
          editor: 'select2', 
          renderer: customDropdownRenderer,
          select2Options: { 
                  data: [],
                  dropdownAutoWidth: true,
                  width: 'resolve'
          }
        },

根据 country_id,我想更改 state_id 的 select2 选项。我知道如何仅使用 select2 来完成这项工作,但我无法弄清楚如何使其与 handsontable 一起工作。

我在 afterChange 中更改了 select2Options,但是该怎么做呢?

  afterChange: function (change, source) {

        if(change)
        {

          if(change[0][1] == 'country_id')
          {
            $.get("/api/states?country="+change[0][3], function(data){

                 //What should be done here?

            });
          }

        }

      },

【问题讨论】:

    标签: jquery-select2 handsontable


    【解决方案1】:

    您检索该国家/地区的所有州。确保状态列表的格式与 select2 期望的格式相同。

    然后循环遍历列列表,确定当前已修改列的依赖列。

    获取单元格属性:

    var cellProperties = instance.getCellMeta(rowIndex, dependentColumnIndex);
    

    更新 select2 源:

    cellProperties['select2Options'].data = [states list];
    

    【讨论】:

    • hot.getCellMeta(row,col).select2Options.data = [状态数据];有效。 getCellMeta 是我应该调用的方法!谢谢!
    • 建议的解决方案在以下情况下不起作用:假设我在第一行选择了“澳大利亚”,它在相应行的州列中显示了澳大利亚的州。在它下面的另一行中,如果我选择“印度”,那么问题就开始了,我们选择“澳大利亚”的第一行的状态数据也更改为“印度”的状态列表。简而言之,所有行的 select2Options 都会发生变化。
    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多