Veronika
Veronika

Reputation: 51

JqxWidgets: Export nested grid

While working with JqxWidges I met a problem with exporting nested grids which use one JSON as a source file. The common solution doesn't work. Actually it exports only parent grid colums.

   $("#excelExport").click(function () {
        $("#jqxGrid").jqxGrid('exportdata', 'csv', chartName + ' ' + date);     
   });

One of the existing solutions (http://www.jqwidgets.com/community/reply/reply-to-export-data-from-a-nested-grid-13/) propose to push nested rows into data array while calling initrowdetails function.

Yes it works! But only for nested grids and in case when this grid was selected.

Upvotes: 3

Views: 827

Answers (1)

Veronika
Veronika

Reputation: 51

So, from this step I am moving to next aproach:

  1. To collect all necessary data into array using initial JSON (prevent you from gathering only separate selected data);

  2. To initialise parent grid columns with all existing data and mark nested columns as hidden. Then when export don't forget to add true parameter to export both non/hidden columns;

  3. Use standard export with custom array parameter;

That's it!

Data collecting:

var toExport = data.allClientsCountChart;
            var exp = new Array();

            for(var i in toExport){   
                var client = {};
                var countr = toExport[i].countries;
                client[labels.clientType]=toExport[i].clientType;
                client[labels.clientTypeCount]=toExport[i].clientTypeCount;
                exp.push(client);
                for(var j in countr) {   
                    var country = {}
                    var detailes = countr[j].clientDetails;
                    country[labels.countryType]=countr[j].countryType;
                    country[labels.clientsNumber]=countr[j].clientsNumber;
                    exp.push(country);
                    for(var d in detailes) {
                        var det = {}
                        det[labels.scriptName]=detailes[d].scriptName;
                        det[labels.clientsCount]=detailes[d].clientsCount;
                        exp.push(det);

                    }
                }

            }

Export:

$("#excelExport").click(function () {  

    $("#jqxGrid").jqxGrid('exportdata', 'csv', chartName + ' ' + date, true, exp, true);        

   }

And don't forget to set the fifth pafameter into true to export hidden columns.

No doubds, it looks hardcoded. But it works for me.

So, if you have a good solution - please leave a comment!!!

Upvotes: 2

Related Questions