Kendo Grid Экспорт в Excel Значения выпадающего списка вместо текста в экспортированном файле - PullRequest
0 голосов
/ 13 июня 2018

когда я экспортирую сетку с помощью saveAsExcel, выпадающие столбцы показывают мне значения (направляющие) вместо текста.как я могу показать текст вместо значений в экспортированном файле?

1 Ответ

0 голосов
/ 13 июня 2018

Вы можете привязать обработчик к событию "excelExport" сетки, которое запускается перед экспортом и позволяет сначала настроить данные.Вы можете циклически проходить по строкам и столбцам, чтобы заменить значение id его отображением в коллекции значений столбцов.Это грубая сила, но это работает.Единственным другим, более эффективным способом было бы создание файла Excel на сервере вместо обработки на стороне клиента, обеспечиваемой сеткой, использующий оптимизированный запрос, который напрямую предоставляет текстовое значение.

Это функциямы используем.Он работает со всеми столбцами с внешним ключом, а не только с перечислениями, несмотря на название.

var replaceEnums = function (e) {

    //Purpose:
    //  Convert enumeration columns to use the string value.

    var hiddenCnt = 0;
    var groupCnt = 0;
    var dataCnt = false;

    //Loop through the columns and look for a values collection. 
    for (var iCol = 0; iCol < e.sender.columns.length; iCol++) {
        //if the column is hidden then do not do the replacement
        if (!e.sender.columns[iCol].hidden) {
            //If the values collection exists that means the column is an enumeration.
            if (e.sender.columns[iCol].values) {
                //Loop through each row
                for (var iRow = 1; iRow < e.workbook.sheets[0].rows.length; iRow++) {
                    if (e.workbook.sheets[0].rows[iRow].type == "data") {
                        var cell = e.workbook.sheets[0].rows[iRow].cells[iCol - hiddenCnt + groupCnt]
                        dataCnt = true;
                        //Loop through the enumeration and get the string value.  Stop once the correct
                        //value is found.
                        for (var iEnums = 0; iEnums < e.sender.columns[iCol].values.length; iEnums++) {
                            if (e.sender.columns[iCol].values[iEnums].value == cell.value) {
                                //Replace the enum value with the string value.
                                cell.value = e.sender.columns[iCol].values[iEnums].text
                                break
                            }
                        }
                    }
                    else {
                        //Track the number of group headers.  We need to track the 
                        //number of group headers because a group causes the columns
                        //to shift over by one for each grouping.
                        if (e.workbook.sheets[0].rows[iRow].type == "group-header") {
                            if (!dataCnt) {
                                groupCnt++;
                            }

                        }
                    }
                }
            }
        }
        else {
            //The column is hidden so add it to the count of hidden columns
            hiddenCnt++;
        }
    }
};

grid.bind("excelExport", replaceEnums);
...