【问题标题】:Populate BootstrapTable x-editable select box based on another column根据另一列填充 BootstrapTable x-editable 选择框
【发布时间】:2018-02-01 19:14:35
【问题描述】:

我有一个 BootstrapTable 选择框。我知道您可以使用函数来填充选择框中的值。我希望该函数根据第二列(称为Text_example)的值来更改它提供的数组。

所以在我的示例中,如果该行的Text_example1,则选择框应包含以下数据:[{1:1}]。如果该行的Text_example2,则选择框应包含以下数据:[{2:2}]

我认为我的问题是我不知道如何仅将行的数据传递给函数get_values,因为我的方法似乎不起作用。

完整的小提琴:http://jsfiddle.net/goxe6ehg/

var data = [{"Text_example": 1},{"Text_example": 2}];

function get_values(data) {
    if (data['Text_Example'] === 1) {
    return [{1:1}];
  }
  else {
    return [{2: 2}]
  }

}

$('#table').bootstrapTable({
  columns: [
   {
      field: 'Select_example',
      title: 'Select_example',
      editable: {
        type: 'select',
        source:  get_values($('#table').bootstrapTable('getData'))
      }
    },
    {
      field: 'Text_example',
      title: 'Text_example'
    }
  ],
  data: data
});

编辑:我过度简化了我的示例。而不是为text_example 设置一个静态字段,我需要它成为一个选择框,其中select_example 的值会根据用户在text_example 中选择的内容而变化。

更新的 JSFiddle:http://jsfiddle.net/4wwv18Lq/4/

【问题讨论】:

    标签: javascript jquery bootstrap-table


    【解决方案1】:

    您可以在可引导库上使用 oninit 处理程序。并通过迭代数据对象来添加可编辑项。

    var data = [{"Text_example": 1},{"Text_example": 2}];
    
    $('#table').on('editable-init.bs.table', function(e){
        var $els =  $('#table').find('.editable');
         $els.each(function(index,value){
                $(this).editable('option', 'source', data[index])
         });
    
    });
    $('#table').bootstrapTable({
      columns: [
       {
          field: 'Select_example',
          title: 'Select_example',
          editable: {
            type: 'select'
          }
        },
        {
          field: 'Text_example',
          title: 'Text_example'
        }
      ],
      data: data
    });
    

    JSfiddle 链接 http://jsfiddle.net/km10z2xe/

    【讨论】:

    • 这很好,确实回答了我的问题,但我愚蠢地过度简化了我的模型。我需要选择框基于另一个用户可以更改的选择框。这对此不起作用,因为它在初始化时设置了值。我已经对我的问题添加了编辑。你介意看看吗? jsfiddle.net/4wwv18Lq/4
    • 是的,我一定会看看的
    • @user2242044 我已经根据编辑进行了更新。
    • 谢谢你,太棒了。它不会让我在 24 小时内发放赏金,但我明天会回来给你。
    • 谢谢你..酷。
    猜你喜欢
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多