Я пытаюсь динамически менять столбцы в моем пользовательском интерфейсе Alloy DataTable - в зависимости от выбранной кнопки столбцы изменяются в зависимости от того, какие данные возвращаются.Обновление столбцов Динамически - Сплав UI
Мои столбцы обновляются, однако фактические данные никогда не включаются в таблицу. Когда я не определяю столбцы как столбцы и данные возвращаются - я, конечно, хотят контролировать, как отображаются мои столбцы и хочет, чтобы установить их атрибуты
Ниже мой код:
var dataTable = new Y.DataTable({ //Defining Datatable with no columns preset
editEvent: 'dblclick',
plugins: [{
cfg: {
highlightRange: false
}]
});
button.on(
'click', //On Click...
function() {
var category = $(this).attr("id"); //value retrieved from id of button selected
dataSource = new Y.DataSource.IO({source: '/searchMyData
dataSource.sendRequest({
dataType: 'json',
on: {
success: function(e) {
response = e.data.responseText;
setColumnNames(category); //Set the Columns...
data = Y.JSON.parse(response);
dataTable.set('data', data);//Then the Data
dataTable.render('#my-container');
},
failure: function() {
alert(e.error.message);
}
}
});
function setColumnNames(tabName){ //Defining Columns
var columns1 = [
{ key: 'id', label: 'ID', width: '70px' },
{ key: 'name', label: 'Name', width: '70px' }
];
var columns2 = [
{ key: 'id', label: 'ID', width: '70px' },
{ key: 'addr', label: 'Address', width: '70px' }
];
switch (category) {
case "person":
dataTable.set('columns', columns1);
break;
case "address":
dataTable.set('columns', columns2);
break;
default:
console.log('');
}
Там в нет проблем с данными, возвращаемыми из запроса ajax, только когда дело доходит до его загрузки в таблицу с новым набором столбцов. Я пробовал метод reset()
по обоим столбцам и данным по каждому клику, но не повезло.