2016-05-26 2 views
0

У меня проблема с jqGrid 4.6.0 Когда я пытаюсь получить данные о строках, он меняет каждую информацию на строку, мне нужно проанализировать их, чтобы получить фактическое значение int или boolean значения странно то, что когда я вижу rowobject внутри пользовательского форматтер ROWDATA кажется правильнымJQGrid getRowdata дает значение ячейки в строке как строку

Вот пример код и 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} 

ответ

2

Вы должны использовать getLocalRow метод вместо getRowData, чтобы решить вашу проблему. Важно понимать, что getRowData получить текст от <td> элемент. Таким образом, стандартный тип данных всегда является строкой. Метод getLocalRow просто получает ссылку на внутренний элемент массива data с исходными данными.

Еще одно замечание: рекомендуется определять unformatter (unformat callback) форматировать всегда, если задавать собственный форматтер.

Можно видеть, что вы используете редактирование данных. Стандартное редактирование изменяет тип данных при модификации. Таким образом, у вас будет такая же проблема, как и раньше. Бесплатный jqGrid позволяет исправить проблему, указав обратный вызов convertOnSave для столбца. См. Статью the wiki для более подробной информации. Кроме того, бесплатный jqGrid поддерживает некоторые стандартные шаблоны столбцов, что упрощает преобразование данных для Boolean, integer и numbers. На добавить template: "integer" свойства в Count колонка (определение шаблона here) и добавить template: "booleanCheckbox" (см here). Вы можете отлаживать, например, the demo и убедиться, что после редактирования будут сохранены типы свойств data.

+0

благодаря этим работал. Что касается ваших замечаний, это быстрое и грязное демо, которое я создал для кого-то вроде вас, чтобы ответить легко. Но мой реальный путь намного сложнее, и у него есть все необходимое, что касается неформатирования и других вещей. –

+0

@AmeteBlessed: Добро пожаловать! – Oleg

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