2015-06-14 3 views
0

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

ответ

0

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