JQgrid总数行

5

@Oleg提供了一个关于jqgrid中行总和的示例,但我尝试应用它却无法工作。我有以下网格,需要计算其“amount”值。

colNames: ['ID', 'FTE', 'Workload'],
    colModel: [
                { name: 'ID', index: 'ID', width: 200, align: 'left', hidden: true },

                { name: 'FTEValue', index: 'FTEValue', width: 200, align: 'left', formatter: 'number' },
                { name: 'Workload', index: 'Workload', width: 200, align: 'left' },



    caption: "Activity FTE",
    gridview: true,
    rownumbers: true,
    rownumWidth: 40,
    scroll: 0,
    rowNum: 100,
    sortname: 'ID',
    pager: '#pager',
    sortorder: "asc",
    viewrecords: true,
    autowidth: true,
    height: '100%',
    footerrow: true,
    jsonReader: { root: "GridData", page: "CurrentPage", total: "TotalPages", records: "TotalRecords", repeatitems: false, id: "0" }
};



DutyFTEGrid.prototype.SetupGrid = function (selector) {
    jQuery(selector).html('<table id="grid"></table><div id="pager"></div>');
    var grid = jQuery("#grid").jqGrid(this.gridConfiguration);

    jQuery("#grid").jqGrid('navGrid', '#pager',
    { edit: false, add: false, search: false }, {}, {},
    { // Delete parameters
        ajaxDelOptions: { contentType: "application/json" },
        mtype: "DELETE",
        serializeDelData: function () {
            return ""; 
        },
        onclickSubmit: function (params, postdata) {
            params.url = serviceURL + 'DutyFTE(' + encodeURIComponent(postdata) + ')/';
        }
    });

    var grid = $("#grid");
    var sum = grid.jqGrid('getCol', 'FTE', false, 'sum');
    grid.jqGrid('footerData', 'set', { DriverEn: 'Total FTE:', FTEValue: sum });
};

请帮忙,Oleg。我尝试了你的例子,但出于某种原因它没有起作用。

2个回答

21

如果我理解得正确,您想在页脚放置 getColfooterData 方法:

var grid = $("#list"),
    sum = grid.jqGrid('getCol', 'amount', false, 'sum');

grid.jqGrid('footerData','set', {ID: 'Total:', amount: sum});
getCol 可以用来计算“amount”列中所有数字的总和,并通过 footerData 将文本“Total:”放置在 'ID''amount' 列的底部。 更新: 可能您遇到问题是因为将代码放错了位置。最安全的位置是在 loadComplete 事件处理程序中。请查看演示

谢谢你,我尝试了,但不知道为什么结果总是0! - Madi
我弄错了列名,但是现在我已经放上了正确的列名,但是没有任何值出现。注意:单元格中的值是浮点数,例如0.3。 - Madi
非常感谢你的帮助和示例,但我不知道为什么网格永远不会进入loadComplete函数。不过,我已经将其更改为gridComplete,现在一切都正常了。再次感谢! - Madi
@Madi:loadComplete执行顺序中的最后一个事件处理程序,我个人更喜欢使用它。此外,它有一个参数 - 数据以与从服务器发送的数据相同的格式发送。您甚至可以从服务器发送任何其他信息并在loadComplete内部读取它。 - Oleg
不要忘记设置网格选项 -> footerrow: true - Łukasz Bańcarz
显示剩余6条评论

0

价格列的总和:

//Count total for a price column
var total = 0;
$('#table tr').each(function(){

    //cells that contains the price
    var tdprice = $(this).find("td:eq(2)").html();

    //Sum it up!
    if (isNaN(tdprice)){ total += parseInt(tdprice); }
});

alert(total + "$");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接