jQWidgets Forums

jQuery UI Widgets Forums Grid aggregates incorrect when apply filter in group mode

This topic contains 4 replies, has 2 voices, and was last updated by  mkdodos 11 years, 11 months ago.

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author

  • mkdodos
    Participant

    Hi,

    Please see the attched screen shot.
    first one shows after apply filter, the correct aggregate of sum.(specific records value)
    pic1
    secode one shows (also in filter) the sum in group mode that is incorrect (the sum of all records value)
    pic2

    Thanks,
    Mark


    Peter Stoev
    Keymaster

    Hi,

    Please, provide a code which demonstrates that behavior and also tell us which version of jQWidgets do you use.

    Best Regards,
    Peter Stoev

    jQWidgets Team
    http://www.jqwidgets.com


    mkdodos
    Participant

    Hi,

    The code below which use jQWidgets 2.7.0.

    Thanks,
    Mark

    $(function() {
    var theme = getTheme();
    var theme3 = getTheme3();
    /*主表*/
    var url = “../data/account_data.php”;
    var source =
    {
    datatype: ‘json’,
    datafields: [
    {name: ‘acc_id’},
    {name: ‘acc_name’},
    {name: ‘asset_name’},
    {name: ‘in_year’},
    {name: ‘in_month’},
    {name: ‘amt’},
    {name: ‘amt_ym’},
    {name: ‘amt_m’, type: ‘number’},
    // {name: ‘ym’},
    {name: ‘use_years’},
    {name: ‘limit_ym’}

    ],
    url: url + “?op=select_fixed_asset”,
    id: ‘id’,
    cache: false,
    pagesize: 20
    };
    var dataAdapter = new $.jqx.dataAdapter(source);
    /*計算出的累計折舊金額,最多為固定資產價值*/
    var cellsrenderer = function(row, columnfield, value, defaulthtml, columnproperties) {
    var dataRecord = $(‘#jqxgrid’).jqxGrid(‘getrowdata’, row);
    var color = ‘#000000’;
    if (value * 1 >= dataRecord.amt) {
    value = dataRecord.amt;
    color = ‘#008000’;
    }
    return ‘‘ + value + ‘‘;

    }

    //群組
    var toThemeProperty = function(className) {
    return className + ” ” + className + “-” + theme;
    }

    var groupsrenderer = function(text, group, expanded, data) {
    if (data.groupcolumn.datafield == ‘acc_name’) {

    var text = group;
    if (data.subItems.length > 0) {
    var aggregate = this.getcolumnaggregateddata(‘amt_m’, [‘sum’], true, data.subItems);
    }
    else {
    var rows = new Array();
    var getRows = function(group, rows) {
    if (group.subGroups.length > 0) {
    for (var i = 0; i < group.subGroups.length; i++) {
    getRows(group.subGroups[i], rows);
    }
    }
    else {
    for (var i = 0; i < group.subItems.length; i++) {
    rows.push(group.subItems[i]);
    }
    }
    }
    getRows(data, rows);
    var aggregate = this.getcolumnaggregateddata(data.groupcolumn.datafield, ['sum'], true, rows);
    }
    // return "ddd";
    return '

    ‘ + text + ‘‘ + ‘‘ + ‘ $’ + aggregate.sum + ‘‘;
    }
    else {
    return ‘

    ‘ + text + ‘‘;
    }
    }

    $(‘#jqxgrid’).jqxGrid(
    {
    width: 1050,
    rowsheight: 30,
    autoheight: true,
    filterable: true,
    groupable: true,
    groupsrenderer: groupsrenderer,
    showgroupsheader: false,
    pageable: true,
    showaggregates: true,
    showstatusbar: true,
    editable: true,
    source: dataAdapter,
    theme: theme,
    columns: [
    {text: ‘使用年限’, datafield: ‘limit_ym’, width: 150, hidden: true},
    {text: ‘科目名稱’, datafield: ‘acc_name’,width:’100′},
    {text: ‘月折舊’, datafield: ‘amt_m’,width:’100′,
    aggregates: [‘sum’],
    aggregatesrenderer: function(aggregates, column, element, summaryData) {
    var renderstring = “

    “;
    $.each(aggregates, function(key, value) {
    renderstring += ‘

    合計:’ + value + ‘

    ‘;
    });
    renderstring += “

    “;
    return renderstring;
    }
    }
    ]
    })

    //查詢
    $(“#btn_filter”).jqxButton({width: ‘100’, theme: theme});
    $(‘#btn_filter’).click(function() {

    if ($(‘#qry_in_year’).val() != ”) {
    var filtergroup = new $.jqx.filter();
    var filtervalue = $(‘#qry_in_year’).val();
    var filtercondition = ‘equal’;
    var filter = filtergroup.createfilter(‘stringfilter’, filtervalue, filtercondition);
    var filter_or_operator = 0;
    filtergroup.addfilter(filter_or_operator, filter);
    $(‘#jqxgrid’).jqxGrid(‘addfilter’, ‘in_year’, filtergroup);
    } else {
    $(‘#jqxgrid’).jqxGrid(‘removefilter’, ‘in_year’);
    }

    if ($(‘#qry_in_month’).val() != ”) {
    var filtergroup = new $.jqx.filter();
    var filtervalue = $(‘#qry_in_month’).val();
    var filtercondition = ‘equal’;
    var filter = filtergroup.createfilter(‘stringfilter’, filtervalue, filtercondition);
    var filter_or_operator = 0;
    filtergroup.addfilter(filter_or_operator, filter);
    $(‘#jqxgrid’).jqxGrid(‘addfilter’, ‘in_month’, filtergroup);
    } else {
    $(‘#jqxgrid’).jqxGrid(‘removefilter’, ‘in_month’);
    }

    if ($(‘#qry_asset_name’).val() != ”) {
    var filtergroup = new $.jqx.filter();
    var filtervalue = $(‘#qry_asset_name’).val();
    var filtercondition = ‘contains’;
    var filter = filtergroup.createfilter(‘stringfilter’, filtervalue, filtercondition);
    var filter_or_operator = 0;
    filtergroup.addfilter(filter_or_operator, filter);
    $(‘#jqxgrid’).jqxGrid(‘addfilter’, ‘asset_name’, filtergroup);
    } else {
    $(‘#jqxgrid’).jqxGrid(‘removefilter’, ‘asset_name’);
    }

    $(‘#jqxgrid’).jqxGrid(‘applyfilters’);

    })

    $(“#btn_filter_5”).jqxButton({width: ‘100’, theme: theme});
    $(‘#btn_filter_5’).click(function() {
    var filtergroup = new $.jqx.filter();
    var date = new Date();

    var filtervalue = ($(‘#qry_in_year’).val() * 12) + ($(‘#qry_in_month’).val() * 1);

    var filtercondition = ‘GREATER_THAN’;

    var filter = filtergroup.createfilter(‘numericfilter’, filtervalue, filtercondition);
    var filter_or_operator = 0;
    filtergroup.addfilter(filter_or_operator, filter);
    $(‘#jqxgrid’).jqxGrid(‘addfilter’, ‘limit_ym’, filtergroup);
    $(‘#jqxgrid’).jqxGrid(‘applyfilters’);
    })

    //清除查詢
    $(“#btn_clear_filter”).jqxButton({width: ‘100’, theme: theme});
    $(‘#btn_clear_filter’).click(function() {
    $(‘#jqxgrid’).jqxGrid(‘clearfilters’);

    })

    //預設年月
    var date = new Date();
    $(‘#qry_in_year’).val(date.getFullYear() – 1911);
    $(‘#qry_in_month’).val(date.getMonth() + 1);

    //按一下做群組,再按一下解除群組
    $(“#btn_group_acc_name”).jqxButton({width: ‘100’, theme: theme});
    $(‘#btn_group_acc_name’).click(function() {
    //判斷是否已群組,決定做群組的動作或解除群組
    var groups = $(‘#jqxgrid’).jqxGrid(‘getrootgroupscount’);
    if (groups == 0){
    $(‘#btn_group_acc_name’).val(‘解除群組’);
    $(‘#jqxgrid’).jqxGrid(‘addgroup’, ‘acc_name’);
    }
    else{
    $(‘#jqxgrid’).jqxGrid(‘removegroup’, ‘acc_name’);
    $(‘#btn_group_acc_name’).val(‘科目群組’);
    }
    })

    })



    設備名稱


    Peter Stoev
    Keymaster

    Hi,

    I suggest you to upgrade to the current version as we have resolved multiple issues since the version that you use. If you experience that behavior even after upgrading, then please, send a complete sample which we will be able to test locally to support@jqwidgets.com.

    Best Regards,
    Peter Stoev

    jQWidgets Team
    http://www.jqwidgets.com


    mkdodos
    Participant

    Hi,

    A complete sample is sent.
    Please help me to solve the problem.

    Thanks,
    Mark

Viewing 5 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic.