JqG​​rid getRowdata将行上的单元格值作为字符串

时间:2016-05-26 22:00:56

标签: jqgrid

我遇到了jqGrid 4.6.0的问题 当我尝试获取行数据时,它将每个数据更改为字符串,我需要解析它们以获得实际的int或boolean值,奇怪的是,当我在自定义格式化程序中看到rowobject时,rowdata似乎是正确的

以下是我创建的示例的示例代码和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 个答案:

答案 0 :(得分:2)

您应该使用getLocalRow方法而不是getRowData来解决您的问题。了解getRowData<td>元素获取文本非常重要。因此,标准类型的数据总是字符串。方法getLocalRow只是使用原始数据获取data数组的内部元素的引用。

还有一句话:如果定义了自定义格式化程序,建议定义unformatterunformat回调)格式化程序。

可以看到您使用的是数据编辑。标准编辑将更改修改时的数据类型。因此,您将遇到与以前相同的问题。免费的jqGrid允许通过为列指定convertOnSave回调来解决问题。有关详细信息,请参阅the wiki文章。此外,免费的jqGrid支持一些标准列模板,这简化了布尔,整数和数字的数据转换。可以在template: "integer"列中添加Count属性(请参阅模板定义here)并添加template: "booleanCheckbox"(请参阅here)。例如,您可以调试the demo并验证编辑后data的属性类型是否可以正确保留。