带有DropDown模板的列的Kendo Grid Excel导出

时间:2015-05-22 09:32:27

标签: excel templates kendo-grid export-to-excel

我想将kendo网格数据导出到excel中。我使用kendo下拉列表作为某些列的模板。

当我导出它时导出但它没有显示这些列的文本值,而是显示那些字段的值。

1 个答案:

答案 0 :(得分:0)

这可能不是最好的"解决方案,但它对我有用。基本上我创建了一个循环并使用下拉列表处理行的函数,使用switch语句根据值设置文本(不幸的是,数据只有值,而不是对象)。

这是我网格的标记:

<div id="grid" data-role="grid"
data-sortable=" {mode: 'single' , allowunsort:true }"
data-toolbar="[{template: this.model.getToolbar}]"
data-excel="{ fileName: 'export.xlsx', allPages:'true' }"
data-excel-export="model.curateExcelData"
data-columns="@string.Format(@"[
        {{ title:'{0}', field: 'Column1', width:80 }},
        {{ title:'{1}', field: 'Column2', width:80 }},
        {{ title:'{12}', field: 'DropDownColumn',template: kendo.template($('#dropdown-template').html()),'width':80, sortable: false }},
]", CommonResource.Column1, CommonResource.Column2, CommonResource.DropDownColumn)"
data-bind="source: items"
data-editable="inline">
</div>

模板:

<script id="dropdown-template" type="text/x-kendo-template">    
    <input data-role="dropdownlist"
           data-auto-bind="false"
           data-value-primitive="true"
           data-text-field="Text"
           data-value-field="Value"
           data-bind="value: dropDownValue, source: dropDownValues"
           style="width:65px" />
</script>

这是更新导出值的函数(在我的情况下,我有一个下拉菜单是&#34; Days&#34;和&#34; Weeks&#34;,这是第12列):

curateExcelData: function (data) {
            var sheet = data.workbook.sheets[0];
            $.each(sheet.rows, function (index, row) {
                if (row.type == "data") {
                    switch (row.cells[12].value) {
                        case "D":
                            row.cells[12].value = "Days";
                            break;
                        case "W":
                            row.cells[12].value = "Weeks";
                        default:
                            break;
                    }
                }
            });
        },
相关问题