【问题标题】:jqGrid export to excel issue when loadonce option is setted to false当 loadonce 选项设置为 false 时,jqGrid 导出到 excel 问题
【发布时间】:2017-01-23 12:41:19
【问题描述】:

我有一个 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;
}

【问题讨论】:

  • 您使用(可以使用)哪个版本的 jqGrid 以及来自 jqGrid 的哪个分支(free jqGrid、商业Guriddo jqGrid JS 或版本 loadonce: true 的情况下,您写了 jqGrid 的不良性能。听起来很奇怪。需要显示多少行?您在服务器上有数据,那么最好将 服务器代码 导出到 Excel。见the old answerthis one
  • 目前我使用 4.4 版的 jqGrid 但我在 4.8 以上的版本中找到了导出选项,所以我会升级它。我的整个解决方案中有超过 21 个网格,每个网格都有不同的设置(url、postData、...),所以我试图避免使用几种服务器端方法而不是一种客户端方法。另外我使用免费的 jqGrid。
  • 免费jqGrid的当前版本是4.13.6(不是4.8)。 4.4.4 版本已有 4 年历史,并且已经死了很多年。我不明白你的说法:“我试图避免使用几种服务器端方法而不是一种客户端方法”。你想要服务器端排序还是客户端排序?需要显示多少行数据?如果行数较少(the demo 5000 行

标签: excel jqgrid export-to-excel paging


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多