jQWidgets Forums
jQuery UI Widgets › Forums › Grid › aggregates incorrect when apply filter in group mode
Tagged: jquery grid aggregates
This topic contains 4 replies, has 2 voices, and was last updated by mkdodos 11 years, 11 months ago.
-
Author
-
Hi,
Please see the attched screen shot.
first one shows after apply filter, the correct aggregate of sum.(specific records value)
secode one shows (also in filter) the sum in group mode that is incorrect (the sum of all records value)
Thanks,
MarkHi,
Please, provide a code which demonstrates that behavior and also tell us which version of jQWidgets do you use.
Best Regards,
Peter StoevjQWidgets Team
http://www.jqwidgets.comHi,
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(‘科目群組’);
}
})})
年
月
設備名稱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 StoevjQWidgets Team
http://www.jqwidgets.comHi,
A complete sample is sent.
Please help me to solve the problem.Thanks,
Mark -
AuthorPosts
You must be logged in to reply to this topic.