Заполнить поле выбора BootstrapTable x-editable на основе другого столбца

У меня есть поле выбора BootstrapTable. Я знаю, что вы можете использовать функцию для заполнения значений в поле выбора. Я бы хотел, чтобы эта функция изменила массив, который она предоставляет, на основе значения второго столбца (называемого Text_example).

Итак, в моем примере, если Text_example для этой строки равно 1, в поле выбора должны быть следующие данные: [{1:1}]. если Text_example для этой строки равно 2, в поле выбора должны быть следующие данные: [{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/


person user2242044    schedule 01.02.2018    source источник


Ответы (1)


Вы можете использовать обработчик oninit в библиотеке bootstraptable. И добавить редактируемые объекты, перебирая объект данных.

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/

person karthick    schedule 06.02.2018
comment
Это здорово и действительно ответило на мой вопрос, но я тупо упростил свою модель. Мне нужно, чтобы поле выбора основывалось на другом поле выбора, которое пользователь может изменить. Это не работает для этого, потому что он устанавливает значения при инициализации. Я добавил правку в свой вопрос. Не могли бы вы взглянуть? jsfiddle.net/4wwv18Lq/4 - person user2242044; 06.02.2018
comment
да конечно посмотрю - person karthick; 06.02.2018
comment
@user2242044 user2242044 Я сделал обновление в соответствии с правкой. - person karthick; 06.02.2018
comment
Спасибо, это здорово. Это не даст мне выдать награду в течение 24 часов, но я вернусь завтра и отдам ее вам. - person user2242044; 06.02.2018
comment
Спасибо.. Круто. - person karthick; 06.02.2018