Spring 3.0、JSP、Tiles を使用して Web アプリケーションを開発しています。JSP ページの 1 つで、JQgrid を使用していくつかのデータを表示する必要があり、ユーザーが JQgrid のデータを Excel シートにエクスポートできるようにするためのボタンを提供する必要があります。
JQgrid の作成に成功し、データを表示できます。
ボタンをクリックするだけで「Excel にエクスポート」機能を実装する方法を考えていました。いくつかの解決策を探してみましたが、具体的なものは見つかりませんでした。
私のハンドラコード:
@RequestMapping(method = RequestMethod.POST, value = "/workQueue")
@ResponseBody
public JqgridResponse loadXXXXXX(@RequestParam int page, @RequestParam int rows, @RequestParam String sidx, @RequestParam String sord){
List<ReferralCase> referrals = XXXXService.getReferralCases();
int endLimit = page * rows;
int startLimit = endLimit - rows;
if (endLimit > referrals.size()) {
endLimit = referrals.size();
}
JqgridResponse response = new JqgridResponse();
response.setRows(referrals.subList(startLimit, endLimit));
response.setPage(page);
response.setRecords(referrals.size());
response.setTotal((referrals.size() / rows) + 1);
return response;
}
私の JSP/JS コード:
$("#XXXXWorkQueueGrid").jqGrid({
url:contextRoot+'/dart/workQueue',
datatype: 'json',
mtype: 'POST',
colNames: ['ID','Created','Last Name','First Name','A1','A2','Status','Updated','Workflow'],
colModel: [
{ name: 'recordId', index: 'recordId', width: 30 },
{ name: 'creationDate', index: 'creationDate', width: 40 },
{ name: 'lastName', index: 'lastName', width: 60 },
{ name: 'firstName', index: 'firstName', width: 60 },
{ name: 'A1', index: 'A1', width: 25 },
{ name: 'A2', index: 'A2', width: 25 },
{ name: 'status', index: 'status', width: 40 },
{ name: 'updateDate', index: 'updateDate', width: 40 },
{ name: 'workflow', index: 'workflow', width: 90 }
],onPaging: function() {
$(this).setGridParam({datatype: 'json'}).triggerHandler("reloadGrid");
},loadComplete: function() {
$(this).setGridParam({datatype: 'json'}).triggerHandler("reloadGrid");
},loadError: function(xhr,st,err) {
alert(err);
},onSelectRow : function(rowid, status, e) {
var selRow = $(this).getGridParam("selrow");
var selRecordId = $(this).getCell(selRow, 'recordId');
window.location = (contextRoot+"XXXX/referralDetails?recId=" + selRecordId );
},
pager: '#XXXXWorkQueuePager',
jsonReader: {
repeatitems: false,
root: "rows",
page: "page",
total: "total",
records: "records"
},
sortorder: "asc",
sortname: 'recordId',
gridview: true,
viewrecords: true,
hoverrows : false,
autowidth: true,
height: 'auto',
rowNum: 12,
forceFit: true,
altRows:true
});
$("#XXXXXWorkQueueGrid").jqGrid('navGrid','#XXXXXWorkQueuePager',{edit:false, add:false, del:false, search:false});
});
JqgridResponse は、私が作成したカスタム DAO クラスです。
どんな助けでも大歓迎です!