如何在jqgrid中获取基于其他两列值计算的第三行值

时间:2013-04-01 11:46:34

标签: jquery jqgrid

我的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];
    }

我试过这段代码。

1 个答案:

答案 0 :(得分:1)

如果您需要在客户端实现第三个blance的实现填充,您有两种主要的实现方式:

  1. 使用自定义格式化程序
  2. 使用beforeProcessing回调。
  3. 第二种方法更好,因为您可以为计算列使用一些预定义的格式化程序。例如,您仍然可以使用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接收从服务器返回的数据作为对象,回调可以修改它。可以用同样的方式添加额外的属性。