Динамическое обновление столбцов — интерфейс Alloy

Я пытаюсь динамически менять столбцы в пользовательском интерфейсе Alloy DataTable — в зависимости от того, какая кнопка выбрана, столбцы изменяются в зависимости от того, какие данные возвращаются.

Мои столбцы обновляются, однако фактические данные никогда не включаются в таблицу. Когда я не определяю какие-либо столбцы, возвращаются и столбцы, и данные - я, конечно, хочу контролировать, как отображаются мои столбцы, и хочу установить их атрибуты.

Ниже мой код:

 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() для обоих столбцов и данных по каждому клику, но не повезло.


person Clay Banks    schedule 14.06.2015    source источник


Ответы (1)


Оказывается, ключи, возвращенные из моего запроса, были написаны заглавными буквами и включали символы подчеркивания (точно так, как они определены в базе данных) - я также заметил, что определение столбцов key чувствительно к регистру. Если бы я изменил один символ из нижнего регистра в верхний, столбец не отображал бы данные.

person Kurai Bankusu    schedule 14.06.2015