JqGrid getRowdata дает значение ячейки в строке в виде строки
У меня проблема с jqGrid 4.6.0. Когда я пытаюсь получить данные строки, они меняют все данные на строки, и мне нужно проанализировать их, чтобы получить действительные значения типа int или boolean. Странно то, что когда я вижу объект строки внутри пользовательского Форматирование строки данных кажется правильным
Вот пример кода и ссылка jsfiddle для примера, который я создал
var myformatter = function (cellval, options, rowObject)
{
// rowObject is correct here {id: 1, Name: "test1", IsActive: true, Count: 10}
var active = rowObject.IsActive;// here active is true/false which is good
var count = rowObject.Count; // here count is 10,20,30 which is good
if(active )
{
// do what ever
}
return cellval;
}
var mydata = [
{id:1, Name: "test1", IsActive: true, Count: 10},
{id:2, Name: "test2", IsActive: false, Count: 20},
{id:3, Name: "test2", IsActive: false, Count: 30} ];
var grid = $("#list").jqGrid({
datatype: "local",
data: mydata,
height: "auto",
colNames: ['id', 'Name','Is Active','Count'],
colModel :[
{name:'id', index:'id', width:55},
{name:'Name', index:'Name', width:90},
{name:'IsActive', index:'IsActive', width:90, editable: true ,formatter:myformatter},
{name:'Count', index:'Count', width:90, editable: true}
],
pager: '#pager',
rowNum:10,
rowList:[10,20,30],
sortname: 'idcustomers',
sortorder: 'asc',
viewrecords: true,
gridview: true,
caption: 'Customers',
cellEdit: true,
cellsubmit: 'clientArray',
});
var row = $('#list').jqGrid('getRowData', 1);
// row is: {id: "1", Name: "test1", IsActive: "true", Count: "10"}
// What I was expecting {id: 1, Name: "test1", IsActive: true, Count: 10}
1 ответ
Вы должны использовать getLocalRow
метод вместо getRowData
чтобы решить вашу проблему. Важно понимать, что getRowData
получить текст от <td>
элемент. Таким образом, стандартный тип данных всегда строковый. Метод getLocalRow
просто получить ссылку на внутренний элемент data
массив с исходными данными.
Еще одно замечание: рекомендуется определять unformatter (unformat
callback) форматер всегда, если определяется пользовательский форматер.
Видно, что вы используете редактирование данных. Стандартное редактирование изменит тип данных при модификации. Таким образом, у вас будет та же проблема, что и раньше. Бесплатная jqGrid позволяет решить проблему, указав convertOnSave
обратный вызов для столбца. Смотрите вики- статью для более подробной информации. Дополнительно бесплатная jqGrid поддерживает некоторые стандартные шаблоны столбцов, что упрощает преобразование данных для логических, целых и числовых значений. На можно добавить template: "integer"
недвижимость в Count
столбец (см. определение шаблона здесь) и добавить template: "booleanCheckbox"
(см. здесь). Вы можете отладить демо, например, и убедиться, что типы свойств data
будет удерживаться правильно после редактирования.