2014-12-12 6 views
0

Мне сложно понять, как программно изменить определение сортировки, которое отправляется на сервер, когда пользователь нажимает на столбец для его сортировки. Я добавил функцию onSortCol в мою конфигурацию сетки. В этой функции мне нужно проверить, находится ли столбец «Id» в любом месте сортировки, отличном от последней позиции. Если это так, его следует удалить.Изменение столбцов сортировки в jqGrid

Вот что я пробовал:

onSortCol: function (index, iCol, sortOrder) { 
    var grid = $(this); 
    var rawSorts = index.split(","); 
    if (rawSorts.length > 1) { 
     var idFieldIndex = -1; 
     var processedSorts = []; 
     for (i = 0; i < rawSorts.length; i++) { 
      var currentSort = rawSorts[i].match(/[^ ]+/g); 
      if (idFieldIndex === -1 && currentSort[0].toUpperCase() === "ID") { 
       idFieldIndex = i; 
      } 
      processedSorts.push({ 
       field: currentSort[0], 
       direction: currentSort[1] || sortOrder 
      }) 
     } 
     if (idFieldIndex !== -1) { 
      processedSorts.splice(idFieldIndex, 1); 
      for (i = 0; i < processedSorts.length; i++) { 
       if (i + 1 < processedSorts.length) { 
        grid.sortGrid(processedSorts[i].field + " " + processedSorts[i].direction); 
       } 
       else { 
        grid.setGridParam("sortorder", processedSorts[i].direction); 
        grid.sortGrid(processedSorts[i].field + " ", true); 
       } 
      } 
      return "stop"; 
     } 
    } 
} 
+0

Пожалуйста, не могли бы вы объяснить более подробно, что вам нужно реализовать? Какой тип данных вы используете? Вы используете 'loadonce: true' или нет? Вы написали «как программно изменить определение сортировки, отправленное на сервер». Если вы используете сортировку на стороне сервера, и вам нужно просто изменить информацию, которая будет отправлена ​​на сервер, вам нужно просто использовать 'serializeGridData' или' beforeRequest' для изменения данных, которые будут отправляться на сервер. – Oleg

+0

В основном, что мне нужно сделать, это удалить сортировку по столбцу «Ид», если это последний столбец сортировки. У меня есть 'datatype: json' и' loadonce: false'. Причина, по которой я пытался реализовать это в 'onSortCol', используя встроенный метод сортировки, а не просто модифицировать почтовые данные, как вы предположили, заключается в том, что я предположил, что для этого подхода также потребуется удалить значок сортировки вручную. – grin0048

+0

Итак, у вас есть столбец «Id» в сетке. Правильно ли это? И вы хотите отрицать сортировку по столбцу? Почему вы не просто включаете 'sortable: false' в определение столбца' Id' в 'colModel'. – Oleg

ответ

1

Самая простая реализация кажется мне следующее: вы не используете какой-либо sortname в сетке первоначально и вам сортировать по Id на сервер, если sidx пуст. Кажется, это единственное, что вам нужно для выполнения ваших требований.

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