匯出功能現在分為兩種模式: static, blob
初始化時指定啟用匯出功能。方式如下:
<table></table>
複製程式碼
var table = document.querySelector('table')
table.GM({
gridManagerName: 'demo-export',
ajax_url: 'http://www.lovejavascript.com/learnLinkManager/getLearnLinkList',
ajax_type: 'POST',
supportAjaxPage: true,
supportExport:true, // 配置啟用匯出功能, 預設即為true
exportConfig: {
// 匯出的方式: 預設為static
// 1.static: 前端靜態匯出, 無需後端提供介面,該方式匯出的檔案並不完美。
// 2.blob: 通過後端介面返回二進位制流。`nodejs`可使用`js-xlsx`, `java`可使用 `org.apache.poi`生成二進位制流。
mode: 'static',
// 匯出的字尾名 , 預設為`xls`
suffix: 'xls',
// 匯出處理器函式,該函式需要返回一個promise。當`exportType`為`static`時,該引數不生效。
handler: (fileName, query, pageData, sortData, selectedList) => {
// 需要通過promise中的resolve()返回二進位制流(blob),有兩種返回格式:
// 1.resolve(blob), 2.resolve({data: blob})
return new Promise();
}
},
query: {pluginId: 1},
i18n: 'en-us',
columnData: [
{
key: 'name',
text: 'name'
},{
key: 'info',
text: 'info'
},{
key: 'url',
text: 'url',
template: function(url, rowObject){
return '<a style="color:#337ab7;" href="'+url+'" target="_blank">點選跳轉</a>';
}
},{
key: 'action',
remind: 'the action',
width: '100px',
text: '操作',
template: function(action, rowObject){
return '<a style="color:#337ab7;" href="javascript:;" onclick="testEditFN()" learnLink-name="'+rowObject.name+'">編輯</a>';
}
}]
});
複製程式碼
渲染完成後,通過 exportGridToXls 方法進行呼叫
GridManager.exportGridToXls('demo-export', fileName, onlyChecked)
複製程式碼
exportGridToXls方法,引數說明:
-
table: 需要操作的table 或 table的gridManagerName值
-
fileName: 匯出後使用的檔名,如果不設定將使用外掛配置項gridManagerName。
-
onlyChecked:是否僅匯出選中的項, 預設為false
注意事項
-
mode = static: 前端靜態匯出,無需後端提供介面,該方式匯出的檔案並不完美,建議使用blob方式。
-
匯出功能的操作介面為右鍵選單,如果在初始化時配置 supportMenu=false, 那麼匯出即使生效也無法通過介面操作。