JqxWidgets: Экспорт вложенной сетки

При работе с JqxWidges я столкнулся с проблемой экспорта вложенных сеток, которые используют один JSON в качестве исходного файла. Обычное решение не работает. На самом деле он экспортирует только столбцы родительской сетки.

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

Одно из существующих решений (http://www.jqwidgets.com/community/reply/reply-to-export-data-from-a-nested-grid-13/) предлагает помещать вложенные строки в массив данных при вызове функции initrowdetails.

Да, это работает! Но только для вложенных сеток и в том случае, если эта сетка была выбрана.


person Veronika    schedule 10.10.2013    source источник


Ответы (1)


Итак, с этого шага я перехожу к следующему подходу:

  1. Собрать все необходимые данные в массив с помощью исходного JSON (предотвратить сбор только отдельных выбранных данных);

  2. Чтобы инициализировать родительские столбцы сетки со всеми существующими данными и пометить вложенные столбцы как скрытые. Затем при экспорте не забудьте добавить параметр true для экспорта обоих столбцов (не/скрытых);

  3. Использовать стандартный экспорт с произвольным параметром массива;

Вот и все!

Сбор данных:

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

                    }
                }

            }

Экспорт:

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

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

   }

И не забудьте установить для пятого пафаметра значение true, чтобы экспортировать скрытые столбцы.

Нет сомнений, это выглядит жестко запрограммированным. Но это работает для меня.

Итак, если у вас есть хорошее решение - пожалуйста, оставьте комментарий!!!

person Veronika    schedule 24.10.2013