当loadonce选项设置为false时,jqGrid导出为ex​​cel问题

时间:2017-01-23 12:41:20

标签: excel jqgrid export-to-excel paging

我有一个ASP.net MVC解决方案,并在其中使用jqGrid。为了获得更好的性能,我使用loadonce: false作为选项,它应该是这样的,不幸的是jqGrid似乎不支持它,因为在我的搜索过程中我找不到任何迹象。

$(document).ready(function () {
    $("#jqGrid").jqGrid(
        {
            url: "/Student/GetStudents",
            mtype: "GET",
            datatype: "json",
            contentType: "application/json; charset-utf-8",

            jsonReader: {
                root: "rows",
                id: "StudentId",
                repeatitems: false
            },
            colNames: ['StudentId', 'FirstName', 'LastName'],
            colModel: [
                { label: 'StudentId', name: 'Id', key: true, width: 75 },
                { label: 'FirstName', name: 'FirstName', width: 150 },
                { label: 'LastName', name: 'LastName', width: 150 },

            ],
            viewrecords: true,
            loadonce: false,
            width: '100%',
            height: 'auto',
            rowNum: 20,
            rowList: [20, 30, 50],
            sortable: true,
            sortname: 'Id',
            pager: "#jqGridPager",

            autoencode: true,
            scroll: false,
            pgbuttons: true,
            autowidth: true,
            shrinkToFit: false,
            forceFit: false,
            gridview: false,
            height: '100%',
            scrollrows: true,
            page: 1,
            //pagerpos: 'center',
            toppager: true,
            recordpos: 'right',
            multiselect: true,
            multiboxonly: true,
            direction: 'rtl',
            ignoreCase: true,
            caption: "",
            rownumbers: true
        });
    $('#jqGrid').jqGrid('navGrid', '#jqGridPager', {
        search: true,
        searchtext: "Search",
        edit: false,
        add: false,
        del: false,
        excel: true,
        refresh: false,

    }, {}, {}, {}, {
        closeOnEscape: true,
        closeAfterSearch: true,
        ignoreCase: true,
        multipleSearch: false,
        multipleGroup: false,
        showQuery: false,
        sopt: ['cn', 'eq', 'ne'],
        defaultSearch: 'cn'
    })
    $('#jqGrid').jqGrid('navButtonAdd', '#jqGridPager', {
        caption: "Export to Excel",
        //buttonicon: "ui-icon-disk",
        buttonicon: "ui-icon-folder-open",
        onClickButton: function () {
            exportToExcel();
        },

    });
});
function exportToExcel(data, e) {
    exportExcelFile(data);
}


function exportExcelFile() {
    debugger;

    var data = $('#jqGrid')[0].addLocalData(true);
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE");
    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {
        frame1.document.open("txt/html", "replace");
        frame1.document.write(setTableOfData(data));
        frame1.document.close();
        frame1.focus();
        sa = frame1.document.execCommand("SaveAs", true, "text.xls");
    } else
        $('#jqGrid').jqGrid('exportToExcel', { fileName: "exportedExcel.xls", navigator: true });
}

function setTableOfData(data) {
    var htmlString = '<table>';
    var header = '<tr><td>StudentId</td><td>FirstName</td><td>LastName</td></tr>';
    htmlString += header;
    for (var i = 0; i < data.length; i++) {
        var tag = '<tr><td>' + data[i].Id + '</td><td>' + data[i].FirstName + '</td><td>' + data[i].LastName + '</td></tr>';
        htmlString += tag;
    }
    htmlString += '</table>';
    return htmlString;
}

1 个答案:

答案 0 :(得分:0)

最后,我强制将网格的所有过滤和其他设置发布到服务器并返回到客户端的链接。然后通过给定的链接,我可以下载excel文件。 信息:您无法下载带有post(ajax)请求的文件。