2015-06-10 4 views
0

Сортировка Grid Kendo не работает после переопределения столбцов. Мой код выглядит следующим образом:Сортировка Grid Kendo не работает после переопределения столбцов

$("#divTableContent").kendoGrid({ 
      pageable: { 
       input: true, //To input the pagenum 
       numeric: false 
      }, 
      dataBound: onDataBoundGrid, 
      resizable: false, 
      filterable: { 
       filter: true, 
       extra: false, 
       operators: { 
        string: { 
         eq: "Is equal to", 
         contains: "Contains", 
        } 
       } 
      }, 
      sortable: { 
       mode: "single", 
       allowUnsort: true 
      }, 
      dataSource: { 
       serverPaging: true, 
       serverSorting: true, 
       serverFiltering: true, 

И моя функция является

с привязкой к данным
function onDataBoundGrid(e) { 
      var gridColumns = []; 
      var tableContentGrid = $("#divTableContent").data("kendoGrid"); 
      debugger; 
      for (var i = 0; i < tableContentGrid.columns.length; i++) { 
       if (tableContentGrid.columns[i].field.indexOf("_") >= 0) { 
        var column = $.grep(seperatedColumnHeaders, function (item) { 
         return item == tableContentGrid.columns[i].field.replace(/_/g, ' '); 
        }); 
        if (column.length > 0) { 
         // Pushing the field and title 
         gridColumns.push({ 'field': tableContentGrid.columns[i].field, 'title': tableContentGrid.columns[i].field.replace(/_/g, ' ') }); 
        } 
        var column1 = $.grep(seperatedColumnHeaders, function (item) { 
         return item == tableContentGrid.columns[i].field; 
        }); 
        if (column1.length > 0) { 
         // Pushing the field and title 
         gridColumns.push({ 'field': tableContentGrid.columns[i].field, 'title': tableContentGrid.columns[i].field.replace(/__/g, ',')}); 
        } 
        if (column.length == 0 && column1.length == 0) { 
         gridColumns.push({ 'field': tableContentGridHeaders[i], 'title': tableContentGridHeaders[i] }); 
        } 
       } else { 
        // Pushing the field and title 
        gridColumns.push({ 'field': tableContentGrid.columns[i].field, 'title': tableContentGrid.columns[i].field }); 
       } 
      } 
      // Replacing the old grid columns with new grid columns 
      tableContentGrid._columns(gridColumns); 
      // Removing the old grid titles 
      tableContentGrid.thead.empty(); 
      // It will replace with new grid titles 
      tableContentGrid._thead(); 
     } 

Мы создаем столбцы динамически и для удаления пробелов в заголовке я написал функцию DataBound. если я удаляю бит данных, то Сортировка работает. Если привязка данных там, сортировка не работает и каждый раз, когда она идет на контроллер, например, по возрастанию.

ответ

0

Сетка Кендо как свойство _columns, но подчеркивание перед ним означает, что оно существует только для внутренней цели. Он не поддерживается Kendo, и его необходимо использовать осторожно, чтобы избежать проблем в другом месте.

Насколько я знаю, вы не можете изменить столбцы сетки после ее загрузки. Добавление, изменение и удаление столбца должно выполняться до инициализации сетки. Тем не менее, вы все равно можете изменить заголовок своего столбца непосредственно в DOM, если вам нужно.

Источник данных и способ предоставления данных, схемы и столбцов в вашей сетке не указаны в вашем примере ... если вам удастся получить все спецификации столбцов до инициализации вашей сетки, вы сможете для реализации логики функции onDataBoundGrid ранее в этом процессе.

Смежные вопросы