Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JqGrid getRowdata将行上的单元格值作为字符串提供_Jqgrid - Fatal编程技术网

JqGrid getRowdata将行上的单元格值作为字符串提供

JqGrid getRowdata将行上的单元格值作为字符串提供,jqgrid,Jqgrid,我对jqGrid 4.6.0有一个问题 当我尝试获取行数据时,它会将每个数据更改为一个字符串,我需要解析它们以获取实际的int或boolean值。奇怪的是,当我在自定义格式化程序中看到rowobject时,rowdata似乎是正确的 下面是我创建的示例的示例代码和链接 var myformatter = function (cellval, options, rowObject) { // rowObject is correct here {id: 1, Name: "test1"

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

下面是我创建的示例的示例代码和链接

  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}

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

还有一句话:如果定义自定义格式化程序,建议始终定义(
unformat
callback)格式化程序


可以看出,您使用的是数据编辑。标准编辑将更改修改时的数据类型。因此,您将遇到与以前相同的问题。Free jqGrid允许通过为列指定
convertOnSave
callback来修复该问题。有关更多详细信息,请参阅文章。另外,免费jqGrid支持一些标准列模板,这简化了布尔、整数和数字的数据转换。在上,可以在
计数列中添加
模板:“integer”
属性(请参见模板定义),并添加
模板:“booleanCheckbox”
(请参见)。例如,您可以调试并验证
数据
的属性类型在编辑后是否正确保持。

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

还有一句话:如果定义自定义格式化程序,建议始终定义(
unformat
callback)格式化程序


可以看出,您使用的是数据编辑。标准编辑将更改修改时的数据类型。因此,您将遇到与以前相同的问题。Free jqGrid允许通过为列指定
convertOnSave
callback来修复该问题。有关更多详细信息,请参阅文章。另外,免费jqGrid支持一些标准列模板,这简化了布尔、整数和数字的数据转换。在上,可以在
计数列中添加
模板:“integer”
属性(请参见模板定义),并添加
模板:“booleanCheckbox”
(请参见)。例如,您可以调试并验证
数据的属性类型在编辑后是否正确保持。

谢谢。关于你的评论,这是一个快速而肮脏的演示,我为像你这样的人创建了一个简单的答案。但我真正的一个是更完整的方式,并有它所需要的一切关于不设防和其他东西。谢谢这工作。关于你的评论,这是一个快速而肮脏的演示,我为像你这样的人创建了一个简单的答案。但我真正的一个是更完整的方式,并有它所需要的一切关于不设防和其他东西。