2011-09-12 4 views
4

iv видел пример @Oleg для общей суммы строк в jqgrid, но я попытался применить его, и это не работает. У меня есть следующая сетка. Мне нужно рассчитать значение суммы для него.JQgrid общая сумма строка

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 }); 
}; 

Олег Ваша помощь, пожалуйста, я попробовал ваш пример, но по какой-то причине он не работал.

ответ

17

Если я вас понимаю правильно, вы хотите поместить в сноске getCol и footerData методы:

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

grid.jqGrid('footerData','set', {ID: 'Total:', amount: sum}); 

getCol можно использовать для вычисления суммы всех чисел в столбце «Сумма» и с уважением footerData вы можете разместить в нижней части колонны 'ID' текст «Всего:» и внизу 'amount' столбец.

ОБНОВЛЕНО: Возможно, у вас проблемы, потому что вы поместите код в неположенное место. Наиболее безопасным местом для кода является loadComplete обработчик событий. Посмотрите на the demo.

+0

спасибо людей, я устал, но я не знаю, почему результат всегда 0! – Madi

+0

Я ошибался с именем col, так или иначе, я ставлю правильный один и сейчас, и не появляется никакого значения, обратите внимание: значения внутри ячеек плавают, как 0.3 – Madi

+0

@Madi: Если вы хотите рассчитать данные как float, вы должны определите float formatter в столбце. Просто добавьте 'formatter: 'number'' в столбец' amount '. Если это не поможет, вы должны добавить свой вопрос с полным определением jqGrid и данными теста. – Oleg

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 + "$"); 
Смежные вопросы