我正在使用selecton編輯器的handsontable,但我似乎無法使動態選項與下拉菜單一起工作,即在handsontable初始化時設置的選項是唯一可以顯示的選項。Handsontable Select2動態選項
我已經嘗試使用全局變量作爲選項的來源,並更新了我的代碼中的各個點,並且還使用了函數來返回相同的變量,但都沒有嘗試似乎工作。
例如
var hot;
var data = [];
function customDropdownRenderer(instance, td, row, col, prop, value, cellProperties) {
if (instance.getCell(row, col)) {
$(instance.getCell(row,col)).addClass('select2dropdown');
}
var selectedId;
var colOptions = cellProperties.select2Options.data;
if (colOptions != undefined) {
for (var index = 0; index < colOptions.length; index++) {
if (parseInt(value) === colOptions[index].id) {
selectedId = colOptions[index].id;
value = colOptions[index].text;
}
}
Handsontable.TextCell.renderer.apply(this, arguments);
}
}
var requiredText = /([^\s])/;
$(document).ready(function(){
var
$container = $("#example1"),
$parent = $container.parent(),
autosaveNotification;
hot = new Handsontable($container[0], {
columnSorting: true,
stretchH: 'all',
startRows: 8,
startCols: 5,
rowHeaders: true,
colHeaders: ['Description', 'Cost', 'Remarks'],
columns: [
{ data: 'description' },
{
data: 'cost',
editor: 'select2',
renderer: customDropdownRenderer,
select2Options: { data: getData(), dropdownAutoWidth: true }
},
{ data: 'remarks' },
],
minSpareCols: 0,
minSpareRows: 1,
contextMenu: true,
data: []
});
data = [{id:'fixed',text:'Fixed'},{id:'variable',text:'Variable'}];
});
function getData() {
return data;
}
http://jsfiddle.net/zfmdu4wt/27/
感謝@mpusarla,我已經看到你在幾個handsontable問題回答,他們是一支偉大的幫助,我不能讓這個工作,除非我做了錯誤的事情 - http://jsfiddle.net/zfmdu4wt/40/。我同意,'數據'是一個可怕的變量名,我沒有在我自己的代碼中將它命名,並且在我自己的例子中,由於ajax請求,變量正在幾個不同的地方更新。 – martincarlin87
這裏是一個更新的修復jsfiddle:http://jsfiddle.net/mpusarla/hwh4fg10/ – mpusarla
謝謝,雖然有點奇怪,表顯示所選選項的「id」而不是「text」屬性。 – martincarlin87