asp.net-mvc - 如何为 jqGrid 启用 excel 导出按钮

标签 asp.net-mvc jqgrid export-to-excel

你好 我想在 jqgrid 的寻呼机中显示“导出到 excel”按钮。我尝试了很多方法,阅读了很多文章/帖子,但我没有看到这个按钮。文档也没有任何用处。我应该执行哪些操作才能看到此按钮

附言。我使用 ASP.NET MVC

附言。我的代码是

<link href="../../Scripts/jquery.UI/css/redmond/jquery-ui-1.8.1.custom.css" rel="Stylesheet"
    type="text/css" />
<link href="../../Scripts/jquery.jqGrid/css/ui.jqgrid.css" rel="Stylesheet" type="text/css" />
<script type="text/javascript" src="../../Scripts/jquery.jqGrid/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.jqGrid/js/i18n/grid.locale-ru.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.jqGrid/js/jquery.jqGrid.min.js"></script>


<table id="EmployeeTable">
</table>
<div id="EmployeeTablePager">
</div>
<script type="text/javascript">
    jQuery(document).ready(function () {
        jQuery('#EmployeeTable').jqGrid({
            url: '/Employee/EmployeeData',
            datatype: "json",
            mtype: 'POST',
            jsonReader: {
                page: "page",
                total: "total",
                records: "records",
                root: "rows",
                repeatitems: false,
                id: ""
            },
            colNames: ['Id', 'Имя', 'Фамилия', 'Email', 'Date'],
            colModel: [
            { name: 'Id', width: 20 },
            { name: 'FirstName', width: 105 },
            { name: 'LastName', width: 100 },
            { name: 'Email', width: 150 },
            { name: 'Date', width: 150, formatter: ndateFormatter }
            ],
            pager: '#EmployeeTablePager',
            excel: true,
            viewrecords: true
        }).jqGrid('navButtonAdd',
        '#EmployeeTablePager',
        { caption: " Export to Excel ",
            buttonicon: "ui-icon-bookmark",
            onClickButton: genCSV, position: "last"
        });
    });
    function genCSV() {
        alert('a');
    }

    function ndateFormatter(cellval, opts, rwdat, _act) {

        var time = cellval.replace(/\/Date\(([0-9]*)\)\//, '$1');
        var date = new Date();
        date.setTime(time);
        return date.toDateString();
    }

</script>

但我没有看到 excel 导入按钮。 http://ru.magicscreenshot.com/jpg/t97BDzCIO0Q.html

为什么?

最佳答案

假设标记为

<table id="jqgrid"></table>
<div id="pager"></div> 

类似的东西

$('#grid')
    .jqGrid({ 
             datatype: "clientSide", 
             height: 190, 
             colNames: headers, 
             colModel: model, 
             multiselect: true, 
             pager: '#pager',
             pgbuttons: false,
             pginput: false,
             caption: "Random Data",
             deselectAfterSort: false,
             width: 930
    }) 
    .jqGrid('navButtonAdd', 
            '#pager',
            {caption:" Export to Excel ", 
            buttonicon:"ui-icon-bookmark", 
            onClickButton: genCSV, position:"last"});

genCSV 将是一个 JavaScript 函数,它将调用 Controller 操作以生成 CSV 文件。

这是 an example ,结合 jQuery flot。创建一些数据,选择一些网格行,然后单击网格左下角的生成图形按钮以绘制点。请注意,这在低于 8 的 Internet Explorer 中不起作用,因为它需要支持 HTML 5 canvas 元素(我没有费心包括 excanvas)。

编辑:

您的标记不起作用,因为您需要先初始化 navGrid,然后才能设置自定义按钮 ( see note on page )。你可以这样做

jQuery(document).ready(function () {
    jQuery('#EmployeeTable').jqGrid({
        url: '/Employee/EmployeeData',
        datatype: "json",
        mtype: 'POST',
        jsonReader: {
            page: "page",
            total: "total",
            records: "records",
            root: "rows",
            repeatitems: false,
            id: ""
        },
        colNames: ['Id', 'Имя', 'Фамилия', 'Email', 'Date'],
        colModel: [
        { name: 'Id', width: 20 },
        { name: 'FirstName', width: 105 },
        { name: 'LastName', width: 100 },
        { name: 'Email', width: 150 },
        { name: 'Date', width: 150, formatter: ndateFormatter }
        ],
        pager: '#EmployeeTablePager',
        excel: true,
        viewrecords: true
    })
      /* Need to initialize navGird before being able to set any custom buttons */
      .jqGrid('navGrid', '#EmployeeTablePager', {
        add: false,
        edit: false,
        del: false,
        search: false,
        refresh: false
    }).jqGrid('navButtonAdd',
    '#EmployeeTablePager',
    { caption: " Export to Excel ",
        buttonicon: "ui-icon-bookmark",
        onClickButton: genCSV, position: "last"
    });
});
function genCSV() {
    alert('a');
}

function ndateFormatter(cellval, opts, rwdat, _act) {

    var time = cellval.replace(/\/Date\(([0-9]*)\)\//, '$1');
    var date = new Date();
    date.setTime(time);
    return date.toDateString();
}

关于asp.net-mvc - 如何为 jqGrid 启用 excel 导出按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5526331/

相关文章:

node.js - 如何从AWS MWS API json响应下载.xlsx文件?

jQuery 验证仅验证第一个隐藏的输入元素?

javascript - 向 MVC Controller 发出 AJAX 请求并从 js 中的响应中获取数据

jquery - JQGrid 寻呼机显示 "1 of Nan"?

c# - 保存文件对话框并导出到 Excel 工作表

javascript - Excel 导出在 Firefox 上不起作用,但在谷歌浏览器中工作正常

使用 bootstrap css 的 MVC 5 Razor Page 中的 HTMl 布局没有显示我想要的方式

asp.net-mvc - MVC3 验证

jquery - JQGrid - 创建没有列名的网格

java - 将 "Options"列添加到 JQGrid?