我的jqgrid中有两列我从第三列json得到的值我必须从其他两个计算值并显示我该怎么做
jQuery("#vehicleResultGrid").jqGrid({
data : jsonText,
datatype : 'local',
rowNum : 20000,
width : '100%',
height : 'auto',
colNames : [ 'FIN', 'VIN','balnce' ],
colModel : [{
name : 'value1',
sortable:false,
width : 190,
classes: "col1"
},{
name : 'value2',
sortable:false,
width : 190
},{
name : 'blance',
formatter: CalculatedFormatFunction
}]
});
function CalculatedFormatFunction(cellval, opts, rowObject, action) {
return rowObject[0]*rowObject[1];
}
我试过这段代码。
答案 0 :(得分:1)
如果您需要在客户端实现第三个blance
列的实现填充,您有两种主要的实现方式:
beforeProcessing
回调。第二种方法更好,因为您可以为计算列使用一些预定义的格式化程序。例如,您仍然可以使用formatter: "interger"
作为列blance
如果使用datatype: 'local'
,填写第三列blance
的问题实际上是微不足道的。您已经将数据(原始代码中的变量jsonText
)作为项目数组输入。例如,您输入数据为
var myOrgData = [
{value1: 2, value2: 3},
{value1: 5, value2: 7}
];
因此,您只需将blance
属性添加到输入数组中的所有项目:
var l = myOrgData.length, i, item;
for (i = 0; i < l; i++) {
item = myOrgData[i];
item.blance = item.value1 * item.value2;
// or if the values could be strings then
// item.blance = parseInt(item.value1, 10) * parseInt(item.value2, 10);
}
您解决问题的方式非常简单,可以使用blance
列的任何格式化程序。例如,您可以定义blance
列,如
{name: "blance", formatter: "integer", sorttype: "integer"}
如果您使用自定义格式化程序
{name: "blance", sorttype: "integer",
formatter: function (cellValue, option, rowObject) {
return parseInt(rowObject.value1, 10) * parseInt(rowObject.value2, 10);
}}
您可以使用未更改的输入数据,但您无法使用预定义格式化程序的优点,或者您必须手动调用原始格式化程序,这会使代码更复杂,更不易读。
如果您使用datatype: "json"
或datatype: "xml"
而不是使用beforeProcessing
,则回调非常接近上述输入数据的简单修改。回调beforeProcessing
接收从服务器返回的数据作为对象,回调可以修改它。可以用同样的方式添加额外的属性。