Я использую пользовательский форматер для моей jqGrid columnModel, и я не могу заставить сортировку работать с функциями форматирования. Если я удаляю столбцы форматирования сортирует нормально.
jQuery("#listAgentOptions").jqGrid({
height: 240,
datatype: "local",
colNames: [' ', 'First Name', 'Last Name', 'Role'],
colModel: [
{ name: 'status', index: 'status', width: 18, sorttype: 'text', align: 'center', formatter: function(cellvalue, options, rowObject) {
return cellvalue == 1 ? "<img src='images/agent_green_s.png' alt='Ready' title='Ready' />" :
cellvalue == 3 ? "<img src='images/agent_red_s.png' alt='Busy' title='Busy' />" :
"<img src='images/agent_orange_s.png' alt='Pending Ready' title='Pending Ready' />";
},
unformat:
function(cellvalue, options, rowObject) { return Math.floor(Math.random() + 0.1).toString(); }
},
{ name: 'firstName', index: 'firstName', width: 92 },
{ name: 'lastName', index: 'lastName', width: 142 },
{ name: 'role', index: 'role', sorttype: 'int', width: 36, align: 'center', formatter: function(cellvalue, options, rowObject) {
return cellvalue == true ? "<img src='images/user_gray.png' alt='Supervisor' title='Supervisor' />" : "<img src='images/user.png' alt='Agent' title='Agent' />";
}, unformat:
function(cellvalue, options, rowObject) { return cellvalue; }
}
],
sortname: 'lastName'
});
Строки добавляются так:
jQuery("#listAgentOptions").jqGrid('clearGridData');
$.each(result, function(i, item) {
if (item.ContactType == 1) {
jQuery("#listAgentOptions").jqGrid('addRowData', i+1, { firstName: item.ContactName.split(" ")[0], lastName: item.ContactName.split(" ")[1],
role: item.IsSupervisor,
status: item.Status == "Ready" ? 1 : item.Status == "Busy" ? 3 : 2
});
}
});
Как правильно настроить сортировку?
Обновление. Я только что скачал последнюю версию jqGrid - та же проблема.
Я также пытался использовать unformat: function(cellvalue, options, rowObject) { }
, но там пустое значение: -E Когда я использую return Math.floor(Math.random() + 0.1).toString();
, он сортирует вещи случайным образом (каждый раз, когда я нажимаю), но return cellvalue;
просто возвращает пустую строку.