作为在jqGrid中的两列上执行数学运算的结果填充列

时间:2010-04-01 14:10:42

标签: jqgrid

背景:我们公司选择了一种工作流程工具,它具有一些“间接”的UI限制。 jqGrid已被确定为克服这些限制的最佳方法之一。因此,此问题的答案需要限制在jqGrid空间内可用的功能。我很难提出这个问题而且我知道你会想要走上其他一百万条道路 - 我们之前已经走过了大多数道路。 :(

问题:jqGrid可以在另外两列上执行数学运算时填充列。这两列的来源在我们的控制之下,因此我们可以“保证”将返回数字数据。此外,结果是我们想要按需显示但尚未存储的结果。在下面的示例中,是否有一个函数允许从以下计算中填充“总计”列:'amount'*'tax'

示例jqGrid javascript:

jQuery("#list3").jqGrid({
    url:'server.php?q=2',
 datatype: "json",
    colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
    colModel:[
     {name:'id',index:'id', width:60, sorttype:"int"},
     {name:'invdate',index:'invdate', width:90, sorttype:"date"},
     {name:'name',index:'name', width:100},
     {name:'amount',index:'amount', width:80, align:"right",sorttype:"float"},
     {name:'tax',index:'tax', width:80, align:"right",sorttype:"float"},  
     {name:'total',index:'total', width:80,align:"right",sorttype:"float"},  
     {name:'note',index:'note', width:150, sortable:false}  
    ],
    rowNum:20,
    rowList:[10,20,30],
    pager: '#pager3',
    sortname: 'id',
    viewrecords: true,
    sortorder: "desc",
    loadonce: true,
    caption: "Load Once Example"
});

1 个答案:

答案 0 :(得分:0)

您是否希望在首次加载网格时执行此计算?如果是这样,您可以指定一个函数作为数据类型。例如:

datatype: function(postdata) {
    jQuery.ajax({
       url: 'example.php',
       data:postdata,
       dataType:"xml",
       complete: function(xmldata,stat){
          if(stat=="success") {
             var thegrid = jQuery("#list3")[0];

             // Loop over the XML one row at a time here,
             // Calculate total, and call addRowData to add it to the jqGrid
          }
       }
    });
},

或者,如果您正在编辑数据并希望在编辑完成时执行计算,是否可以提供更多信息,例如您正在执行的编辑类型(内联,表单等)?