jQWidgets Forums

jQuery UI Widgets Forums Grid Grid aggregatesrenderer

This topic contains 3 replies, has 3 voices, and was last updated by  Yavor Dashev 3 years, 11 months ago.

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
  • Grid aggregatesrenderer #30046

    stevenmahony
    Participant

    Hi, I’m having an issue with aggregatesrenderer in a grid with columngroup. i am on version 3.0.2

    Here is my grid

     grid.jqxGrid({
    width: '99.9%',
    height: 600,
    theme: theme,
    source: dataAdapter,
    altrows: true,
    showstatusbar: true,
    showaggregates: true,
    statusbarheight: 40,
    enablehover: true,
    showtoolbar: true,
    columns: SetGridColumns('product', $(".jqx-slider").jqxSlider('values')),
    columngroups: SetGridColumnsGroups($(".jqx-slider").jqxSlider('values')),
    sortable: true
    });
    Here are mycloumns setup
    function SetGridColumns(type,daterange) {
    var columns = [
    type === 'product' ? { text: 'Tour', dataField: 'ProductName', width: '22%', align: 'center', pinned: true }
    : { text: 'Guide', dataField: 'UserName', width: '22%', align: 'center', pinned: true },
    { columngroup: 'January', text: 'Avg', dataField: 'JanAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'January', text: '#', dataField: 'JanTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'February', text: 'Avg', dataField: 'FebAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'February', text: '#', dataField: 'FebTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'March', text: 'Avg', dataField: 'MarAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'March', text: '#', dataField: 'MarTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'April', text: 'Avg', dataField: 'AprAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'April', text: '#', dataField: 'AprTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'May', text: 'Avg', dataField: 'MayAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'May', text: '#', dataField: 'MayTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'June', text: 'Avg', dataField: 'JunAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'June', text: '#', dataField: 'JunTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'July', text: 'Avg', dataField: 'JulAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'July', text: '#', dataField: 'JulTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'August', text: 'Avg', dataField: 'AugAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'August', text: '#', dataField: 'AugTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'September', text: 'Avg', dataField: 'SepAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'September', text: '#', dataField: 'SepTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'October', text: 'Avg', dataField: 'OctAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'October', text: '#', dataField: 'OctTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'November', text: 'Avg', dataField: 'NovAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'November', text: '#', dataField: 'NovTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'December', text: 'Avg', dataField: 'DecAverage', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'December', text: '#', dataField: 'DecTotal', width: '4%', align: 'center', cellsalign: 'center', cellsrenderer: cellsrenderer },
    { columngroup: 'Total', text: 'Avg', dataField: 'TotAverage', width: '6%', align: 'center', cellsalign: 'center', cellclassname: 'totals'},
    { columngroup: 'Total', text: '#', dataField: 'TotTotal', width: '6%', align: 'center', cellsalign: 'center', cellclassname: 'totals',
    aggregates: ['sum'],
    aggregatesrenderer: function (aggregates) {
    return 1;
    }
    }
    ]
    var startMonth = daterange[0];
    var endMonth = daterange[1];
    if (startMonth == 1) {
    columns.splice(1 + (endMonth * 2), (12 - endMonth) * 2);
    } else {
    columns.splice(1, (startMonth * 2) - 2); // remove the LEFT COLUMNS
    columns.splice((endMonth * 2) - ((startMonth * 2) - 3), (columns.length - (endMonth - startMonth) * 2) - 5);
    }
    return columns;
    }
    function SetGridColumnsGroups(daterange) {
    var columnGroups = [
    { text: 'January', align: 'center', name: 'January' }
    , { text: 'February', align: 'center', name: 'February' }
    , { text: 'March', align: 'center', name: 'March' }
    , { text: 'April', align: 'center', name: 'April' }
    , { text: 'May', align: 'center', name: 'May' }
    , { text: 'June', align: 'center', name: 'June' }
    , { text: 'July', align: 'center', name: 'July' }
    , { text: 'August', align: 'center', name: 'August' }
    , { text: 'September', align: 'center', name: 'September' }
    , { text: 'October', align: 'center', name: 'October' }
    , { text: 'November', align: 'center', name: 'November' }
    , { text: 'December', align: 'center', name: 'December' }
    , { text: 'Total', align: 'center', name: 'Total' }
    ]
    var startMonth = daterange[0];
    var endMonth = daterange[1];
    if (startMonth == 1) {
    columnGroups.splice(endMonth, (12 - endMonth));
    } else {
    columnGroups.splice(0, (startMonth - 1)); // remove the LEFT COLUMNS
    columnGroups.splice(endMonth - (startMonth-1), (columnGroups.length - (endMonth - (startMonth-1)))-1);
    }
    return columnGroups;
    }

    Here are the dataFields

    datafields: [
    { name: 'ProductName', type: 'string' },
    { name: 'JanTotal', type: 'int' },
    { name: 'JanAverage', type: 'float' },
    { name: 'FebTotal', type: 'int' },
    { name: 'FebAverage', type: 'float' },
    { name: 'MarTotal', type: 'int' },
    { name: 'MarAverage', type: 'float' },
    { name: 'AprTotal', type: 'int' },
    { name: 'AprAverage', type: 'float' },
    { name: 'MayTotal', type: 'int' },
    { name: 'MayAverage', type: 'float' },
    { name: 'JunTotal', type: 'int' },
    { name: 'JunAverage', type: 'float' },
    { name: 'JulTotal', type: 'int' },
    { name: 'JulAverage', type: 'float' },
    { name: 'AugTotal', type: 'int' },
    { name: 'AugAverage', type: 'float' },
    { name: 'SepTotal', type: 'int' },
    { name: 'SepAverage', type: 'float' },
    { name: 'OctTotal', type: 'int' },
    { name: 'OctAverage', type: 'float' },
    { name: 'NovTotal', type: 'int' },
    { name: 'NovAverage', type: 'float' },
    { name: 'DecTotal', type: 'int' },
    { name: 'DecAverage', type: 'float' },
    { name: 'TotTotal', type: 'int' },
    { name: 'TotAverage', type: 'float' }
    ],

    I get the following error when the aggregatesrenderer function is called.

    Sys.ParameterCountException: Sys.ParameterCountException: Parameter count mismatch.
    {name: “format”, type: String}

    Thanks in advance.

    Steven

    Grid aggregatesrenderer #30082

    stevenmahony
    Participant

    I have an update on this.

    I am using the jqWidgets library in Visual Studio 2010 Ultimate

    Ignore the code above, this also happens when i take the aggregatesrenderer example from this site and run it in an aspx page in visual studio.

    When the web.config has debug mode set to true the applications loads microsoftajax.debug.js and this throws the error mentioned above when calling the aggregatesrenderer function.

    Any suggestions on how to fix this apart from the obvious, set debug false in web.config?

    Thanks
    Steven

    Grid aggregatesrenderer #120441

    iangwatts
    Participant

    I know this one is old, but … I am getting a javascript fail in the microsoftajax logic when I try to apply an aggregatesrenderer to a column that has no values (they are all null). Apart from catching the nulls before they are sent to the dataadaptor (on the server side) there doesn’t seem to be a way to catch them on the client side. Note that I can aggregate, and I get “Sum:NaN”. However, if I override the renderer it bugs out in Microsoftajax. If at least one value is non-null then it gets to the aggregatesrenderer function. Code snippet is:
    {
    text: ‘Total Budget (‘ + self.OrganisationCurrency + ‘)’, datafield: ‘TotalBudget’, width: 120, cellsalign: ‘right’, align: ‘right’, cellsformat: ‘d2’,
    cellsrenderer: self.moneyRenderer, aggregates: [‘sum’], aggregatesrenderer: self.aggMoneyRenderer
    },

    FWIW here is the renderer code. Note that it doesn’t make it to this function on the column in question.
    self.aggMoneyRenderer = function (aggregates) {
    var ag = aggregates[‘sum’] || ‘0’; // not sure why the renderer needs to send the value as a string – so we need to parse it …
    var sum = parseFloat(ag.replace(/,/g, ”))
    return ‘<div class=”grid-div” style=”text-align: right; margin-top: 4px;”><span>’ + self.moneyFormatter.format(sum) + ‘</span></div>’;
    };

    Grid aggregatesrenderer #120446

    Yavor Dashev
    Participant

    Hi iangwatts,

    I have tested a use case similar to yours but I was unable to reproduce the exact same issue as you do.

    Also when using this behavior is present when you parse the string, and without it returns a value of ‘0’ which if I understood correctly is what you need.So I would suggest you remove the line var sum = parseFloat(ag.replace(/,/g, ”)) and test it and let me know if that works for you!

    If my suggestion wasn’t useful for you its best to create a complete code example of your use case in order to able to fully assist you.

    Please, do not hesitate to contact us if you have any additional questions.

    Best Regards,
    Yavor Dashev
    jQWidgets team
    https://www.jqwidgets.com

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

You must be logged in to reply to this topic.