根据另一列

时间:2018-02-01 19:14:36

标签: javascript jquery bootstrap-table

我有一个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/

1 个答案:

答案 0 :(得分:2)

您可以在可引导库上使用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/