JqGrid getRowdata将行上的单元格值作为字符串提供
我对jqGrid 4.6.0有一个问题 当我尝试获取行数据时,它会将每个数据更改为一个字符串,我需要解析它们以获取实际的int或boolean值。奇怪的是,当我在自定义格式化程序中看到rowobject时,rowdata似乎是正确的 下面是我创建的示例的示例代码和链接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"
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”
(请参见)。例如,您可以调试并验证数据的属性类型在编辑后是否正确保持。谢谢。关于你的评论,这是一个快速而肮脏的演示,我为像你这样的人创建了一个简单的答案。但我真正的一个是更完整的方式,并有它所需要的一切关于不设防和其他东西。谢谢这工作。关于你的评论,这是一个快速而肮脏的演示,我为像你这样的人创建了一个简单的答案。但我真正的一个是更完整的方式,并有它所需要的一切关于不设防和其他东西。