eayui结合Spring Boot实现客户端分页
来源:互联网 发布:ai软件视频教程 编辑:程序博客网 时间:2024/05/18 02:09
1.前端代码
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Search</title><!--editor start--><link href="assets/css/bootstrap-combined.min.css" rel="stylesheet"><link href="assets/css/font-awesome.css" rel="stylesheet"><style>#editor {resize:vertical; overflow:auto; border:1px solid silver; border-radius:5px; min-height:200px;box-shadow: inset 0 0 10px silver;padding:1em;margin-left: -15px;}</style><!--editor end--><link rel="stylesheet" type="text/css" href="themes/default/easyui.css"><link rel="stylesheet" type="text/css" href="themes/icon.css"><link rel="stylesheet" type="text/css" href="demo.css"><script type="text/javascript" src="jquery.min.js"></script><script type="text/javascript" src="jquery.easyui.min.js"></script></head><body><div class="content"> <div class="container-fluid"> <div id='pad-wrapper'><div id="editparent"><div id='editControls' class='span9' style=' padding:5px;'><div class='btn-group'><a class='btn' data-role='undo' href='#'><i class='icon-undo'></i></a><a class='btn' data-role='redo' href='#'><i class='icon-repeat'></i></a></div><div class='btn-group'><a class='btn' data-role='bold' href='#'><b>Bold</b></a><a class='btn' data-role='italic' href='#'><em>Italic</em></a><a class='btn' data-role='underline' href='#'><u><b>U</b></u></a><a class='btn' data-role='strikeThrough' href='#'><strike>abc</strike></a></div><div class='btn-group'><a class='btn' data-role='justifyLeft' href='#'><i class='icon-align-left'></i></a><a class='btn' data-role='justifyCenter' href='#'><i class='icon-align-center'></i></a><a class='btn' data-role='justifyRight' href='#'><i class='icon-align-right'></i></a><a class='btn' data-role='justifyFull' href='#'><i class='icon-align-justify'></i></a></div><div class='btn-group'><a class='btn' data-role='indent' href='#'><i class='icon-indent-right'></i></a><a class='btn' data-role='outdent' href='#'><i class='icon-indent-left'></i></a></div><div class='btn-group'><a class='btn' data-role='insertUnorderedList' href='#'><i class='icon-list-ul'></i></a><a class='btn' data-role='insertOrderedList' href='#'><i class='icon-list-ol'></i></a></div><div class='btn-group'><a class='btn' data-role='h1' href='#'>h<sup>1</sup></a><a class='btn' data-role='h2' href='#'>h<sup>2</sup></a><a class='btn' data-role='p' href='#'>p</a></div><div class='btn-group'><a class='btn' href='#' style="margin-left:300%;background-color:#0000ff" onclick="submitSql()">Submit Sql</a></div></div><div id='editor' class='span9' style='' contenteditable></div></div></div></div><p style="padding:10px 50px"></p></div><div class="footer-banner" style="width:728px; margin:0 auto"></div><!--<script src="assets/js/jquery.min.js"></script>--><script src="assets/js/bootstrap.min.js"></script><script>$(function() {$('#editControls a').click(function(e) {switch($(this).data('role')) {case 'h1':case 'h2':case 'p':document.execCommand('formatBlock', false, '<' + $(this).data('role') + '>');break;default:document.execCommand($(this).data('role'), false, null);break;}})});</script><div style="margin:20px 0;"></div><table id="dg" title="Client Side Pagination" style="width:100%;height:300px" data-options="rownumbers:true,singleSelect:true,autoRowHeight:false,pagination:true,pageSize:10"><!-- <thead><tr><th field="user_id" width="80">User ID</th></tr></thead> --><!-- <thead><tr><th field="inv" width="80">Inv No</th><th field="date" width="100">Date</th><th field="name" width="80">Name</th><th field="amount" width="80" align="right">Amount</th><th field="price" width="80" align="right">Price</th><th field="cost" width="100" align="right">Cost</th><th field="note" width="110">Note</th></tr></thead> --></table><script>function submitSql() { console.log("submit sql"); $.post("/getTable",{sql : function(){console.log($("#editor").text().trim());return $("#editor").text().trim()}}, function(myJSON) { console.log("result is ");console.log(myJSON);if(myJSON.success === true){ console.log("columns is "); console.log(myJSON.columns); console.log("resultSet is "); console.log(myJSON.resultSet); columns = myJSON.columns; resultSet = myJSON.resultSet; var myColumns = new Array(columns.length); for(i = 0;i < columns.length;i++){ var column = new Object(); column.field = columns[i]; column.title = columns[i]; column.width = 100;//100 / columns.length / 100; myColumns[i] = column; } console.log("myColumns is "); console.log(myColumns); var myShowColumns = new Array(); myShowColumns[0] = myColumns; console.log("myShowColumns is "); console.log(myShowColumns); $('#dg').datagrid({columns:myShowColumns,data:resultSet}).datagrid('clientPaging'); //$('#dg').datagrid({columns:myJSON.columns}).datagrid({data:myJSON.resultSet}).datagrid('clientPaging');}else{ alert(myJSON.errorMsg);}});}(function($){function pagerFilter(data){if ($.isArray(data)){// is arrayconsole.log("data isArray,its content is "); console.log(data);data = {total: data.length,rows: data}console.log("after change data is ");console.log(data);}var target = this;var dg = $(target);var state = dg.data('datagrid');var opts = dg.datagrid('options');if (!state.allRows){state.allRows = (data.rows);}if (!opts.remoteSort && opts.sortName){var names = opts.sortName.split(',');var orders = opts.sortOrder.split(',');state.allRows.sort(function(r1,r2){var r = 0;for(var i=0; i<names.length; i++){var sn = names[i];var so = orders[i];var col = $(target).datagrid('getColumnOption', sn);var sortFunc = col.sorter || function(a,b){return a==b ? 0 : (a>b?1:-1);};r = sortFunc(r1[sn], r2[sn]) * (so=='asc'?1:-1);if (r != 0){return r;}}return r;});}var start = (opts.pageNumber-1)*parseInt(opts.pageSize);var end = start + parseInt(opts.pageSize);data.rows = state.allRows.slice(start, end);return data;}var loadDataMethod = $.fn.datagrid.methods.loadData;var deleteRowMethod = $.fn.datagrid.methods.deleteRow;$.extend($.fn.datagrid.methods, {clientPaging: function(jq){return jq.each(function(){var dg = $(this); var state = dg.data('datagrid'); var opts = state.options; opts.loadFilter = pagerFilter; var onBeforeLoad = opts.onBeforeLoad; opts.onBeforeLoad = function(param){ state.allRows = null; return onBeforeLoad.call(this, param); } var pager = dg.datagrid('getPager');pager.pagination({onSelectPage:function(pageNum, pageSize){opts.pageNumber = pageNum;opts.pageSize = pageSize;pager.pagination('refresh',{pageNumber:pageNum,pageSize:pageSize});dg.datagrid('loadData',state.allRows);}}); $(this).datagrid('loadData', state.data); if (opts.url){ $(this).datagrid('reload'); }});}, loadData: function(jq, data){ jq.each(function(){ $(this).data('datagrid').allRows = null; }); return loadDataMethod.call($.fn.datagrid.methods, jq, data); }, deleteRow: function(jq, index){ return jq.each(function(){ var row = $(this).datagrid('getRows')[index]; deleteRowMethod.call($.fn.datagrid.methods, $(this), index); var state = $(this).data('datagrid'); if (state.options.loadFilter == pagerFilter){ for(var i=0; i<state.allRows.length; i++){ if (state.allRows[i] == row){ state.allRows.splice(i,1); break; } } $(this).datagrid('loadData', state.allRows); } }); }, getAllRows: function(jq){ return jq.data('datagrid').allRows; }})})(jQuery);function getData(){var rows = [];/* for(var i=1; i<=800; i++){var amount = Math.floor(Math.random()*1000);var price = Math.floor(Math.random()*1000);rows.push({inv: 'Inv No '+i,date: $.fn.datebox.defaults.formatter(new Date()),name: 'Name '+i,amount: amount,price: price,cost: amount*price,note: 'Note '+i});} */return rows;}$(function(){$('#dg').datagrid({data:getData()});});</script></body></html>2.后端代码
@RequestMapping(value = {"/getTable"})@ResponseBodypublic ExecutorVO getTable(@RequestParam(name="sql", required = true) final String sql){log.info(sql);ExecutorVO result = facadeManager.executeQuery(sql, null);log.info(result.toString());log.info(result.getResultSet().toString());return result;}
3.上面的前端代码有点问题,就是第二次点击按钮的时候会出现错误,修改如下
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Search</title><!--editor start--><link href="assets/css/bootstrap-combined.min.css" rel="stylesheet"><link href="assets/css/font-awesome.css" rel="stylesheet"><style>#editor {resize: vertical;overflow: auto;border: 1px solid silver;border-radius: 5px;min-height: 200px;box-shadow: inset 0 0 10px silver;padding: 1em;margin-left: -15px;}</style><!--editor end--><link rel="stylesheet" type="text/css" href="themes/default/easyui.css"><link rel="stylesheet" type="text/css" href="themes/icon.css"><link rel="stylesheet" type="text/css" href="demo.css"><script type="text/javascript" src="jquery.min.js"></script><script type="text/javascript" src="jquery.easyui.min.js"></script></head><body><div class="content"><div class="container-fluid"><div id='pad-wrapper'><div id="editparent"><div id='editControls' class='span9' style='padding: 5px;'><div class='btn-group'><a class='btn' data-role='undo' href='#'><i class='icon-undo'></i></a><a class='btn' data-role='redo' href='#'><iclass='icon-repeat'></i></a></div><div class='btn-group'><a class='btn' data-role='bold' href='#'><b>Bold</b></a> <aclass='btn' data-role='italic' href='#'><em>Italic</em></a> <aclass='btn' data-role='underline' href='#'><u><b>U</b></u></a> <aclass='btn' data-role='strikeThrough' href='#'><strike>abc</strike></a></div><div class='btn-group'><a class='btn' data-role='justifyLeft' href='#'><iclass='icon-align-left'></i></a> <a class='btn'data-role='justifyCenter' href='#'><iclass='icon-align-center'></i></a> <a class='btn'data-role='justifyRight' href='#'><iclass='icon-align-right'></i></a> <a class='btn'data-role='justifyFull' href='#'><iclass='icon-align-justify'></i></a></div><div class='btn-group'><a class='btn' data-role='indent' href='#'><iclass='icon-indent-right'></i></a> <a class='btn'data-role='outdent' href='#'><i class='icon-indent-left'></i></a></div><div class='btn-group'><a class='btn' data-role='insertUnorderedList' href='#'><iclass='icon-list-ul'></i></a> <a class='btn'data-role='insertOrderedList' href='#'><iclass='icon-list-ol'></i></a></div><div class='btn-group'><a class='btn' data-role='h1' href='#'>h<sup>1</sup></a> <aclass='btn' data-role='h2' href='#'>h<sup>2</sup></a> <aclass='btn' data-role='p' href='#'>p</a></div><div class='btn-group'><a class='btn' href='#'style="margin-left: 100%; background-color: #0000ff"onclick="submitSql()">Submit Sql</a><!-- <a class='btn' href='#'style="margin-left: 100%; background-color: #0000ff"onclick="insertDG()">insert</a> --></div></div><div id='editor' class='span9' style='' contenteditable></div></div></div></div><p style="padding: 10px 50px"></p></div><div class="footer-banner" style="width: 728px; margin: 0 auto"></div><!--<script src="assets/js/jquery.min.js"></script>--><script src="assets/js/bootstrap.min.js"></script><script>$(function() {$('#editControls a').click(function(e) {switch($(this).data('role')) {case 'h1':case 'h2':case 'p':document.execCommand('formatBlock', false, '<' + $(this).data('role') + '>');break;default:document.execCommand($(this).data('role'), false, null);break;}})});</script><div id="testpoint" style="margin: 20px 0;"><div id="tablediv"> <div id="tablediv"> <table id="dg" style="width: 100%; height: 300px"data-options="rownumbers:true,singleSelect:true,autoRowHeight:false,pagination:true,pageSize:10"></table> </div><!-- <thead><tr><th field="user_id" width="80">User ID</th></tr></thead> --><!-- <thead><tr><th field="inv" width="80">Inv No</th><th field="date" width="100">Date</th><th field="name" width="80">Name</th><th field="amount" width="80" align="right">Amount</th><th field="price" width="80" align="right">Price</th><th field="cost" width="100" align="right">Cost</th><th field="note" width="110">Note</th></tr></thead> --><script>/*Start*/var loadDataMethod;var isFirst = true;function init($){function pagerFilter(data){console.log("function:pagerFilterINSIDE");if ($.isArray(data)){// is arrayconsole.log("data isArray,its content is "); console.log(data);data = {total: data.length,rows: data}console.log("after change data is ");console.log(data); }var target = this;var dg = $(target);var state = dg.data('datagrid');console.log("state in PageFilter is ");console.log(state);var opts = dg.datagrid('options');console.log("opts in PageFilter is ");console.log(opts);if (!state.allRows){state.allRows = (data.rows);}console.log("after changed the state is ");console.log(state);if (!opts.remoteSort && opts.sortName){var names = opts.sortName.split(',');var orders = opts.sortOrder.split(',');state.allRows.sort(function(r1,r2){var r = 0;for(var i=0; i<names.length; i++){var sn = names[i];var so = orders[i];var col = $(target).datagrid('getColumnOption', sn);var sortFunc = col.sorter || function(a,b){return a==b ? 0 : (a>b?1:-1);};r = sortFunc(r1[sn], r2[sn]) * (so=='asc'?1:-1);if (r != 0){return r;}}return r;});}var start = (opts.pageNumber-1)*parseInt(opts.pageSize);var end = start + parseInt(opts.pageSize);console.log("start is " + start + ",end is " + end);data.rows = state.allRows.slice(start, end);return data; }loadDataMethod = $.fn.datagrid.methods.loadData;$.extend($.fn.datagrid.methods, {clientPaging: function(jq){console.log("function:clientINSIDE");return jq.each(function(){var dg = $(this); var state = dg.data('datagrid'); console.log("state in clientPaging is ");console.log(state); var opts = state.options; console.log("opts in clientPaging is ");console.log(opts); opts.loadFilter = pagerFilter; var onBeforeLoad = opts.onBeforeLoad; opts.onBeforeLoad = function(param){ state.allRows = null; return onBeforeLoad.call(this, param); } var pager = dg.datagrid('getPager');pager.pagination({onSelectPage:function(pageNum, pageSize){opts.pageNumber = pageNum;opts.pageSize = pageSize;pager.pagination('refresh',{pageNumber:pageNum,pageSize:pageSize});console.log("pageNumber is " + pageNum + ",pageSize is " + pageSize);dg.datagrid('loadData',state.allRows);console.log("state.allRows in clientPaging is ")console.log(state.allRows);}}); $(this).datagrid('loadData', state.data); console.log("state.data in clientPaging is "); console.log(state.data); if (opts.url){ console.log("reload!!!!!!!!!!!"); $(this).datagrid('reload'); }});}, loadData: function(jq, data){ console.log("function:loadDataINSIDE"); jq.each(function(){ $(this).data('datagrid').allRows = null; }); console.log("data in loadData is "); console.log(data); return loadDataMethod.call($.fn.datagrid.methods, jq, data); }})};/*End*/function submitSql() { console.log("submit sql"); if(isFirst === false){ $.fn.datagrid.methods.loadData = loadDataMethod; $.fn.datagrid.methods.clientPaging = null; /* $.extend($.fn.datagrid.methods, {clientPaging: function(jq){console.log("recover");}, loadData: function(jq, data){ console.log("recover"); }}); */ } isFirst = false; removeDG(); insertDG(); $.post("/getTable",{sql : function(){console.log($("#editor").text().trim());return $("#editor").text().trim()}}, function(myJSON) {init(jQuery); /* console.log("result is ");console.log(myJSON); */if(myJSON.success === true){ /* console.log("columns is "); console.log(myJSON.columns); console.log("resultSet is "); console.log(myJSON.resultSet);*/ columns = myJSON.columns; resultSet = myJSON.resultSet; var myColumns = new Array(columns.length); for(i = 0;i < columns.length;i++){ var column = new Object(); column.field = columns[i]; column.title = columns[i]; column.width = 100;//100 / columns.length / 100; myColumns[i] = column; } /* console.log("myColumns is "); console.log(myColumns); */ var myShowColumns = new Array(); myShowColumns[0] = myColumns; /*console.log("myShowColumns is "); console.log(myShowColumns); */ console.log("resultSet is "); console.log(resultSet); //$('#dg').datagrid({columns:myShowColumns}); $('#dg').datagrid({columns:myShowColumns,data:resultSet}).datagrid('clientPaging'); //$('#dg').datagrid({columns:myJSON.columns}).datagrid({data:myJSON.resultSet}).datagrid('clientPaging');}else{ alert(myJSON.errorMsg);}});}function removeDG(){console.log("remove dg");$("#tablediv").remove();}function insertDG(){console.log("insert dg");$("#testpoint").after("<div id='tablediv'></div>");$("#tablediv").append("<table id='dg' style='width: 100%; height: 300px' data-options='rownumbers:true,singleSelect:true,autoRowHeight:false,pagination:true,pageSize:10'>");}</script></body></html>
0 1
- eayui结合Spring Boot实现客户端分页
- angular+bootstrap+spring boot实现分页
- Spring Boot整合PageHelper 实现数据库分页
- easyui pagination spring boot 分页程序实现
- spring boot结合spring security实现注册后自动登录
- spring boot cxf 结合
- Spring boot结合Mysql
- eayui datagrid 分页 排序 详解
- Spring boot中结合Specification自定义Repository实现
- spring boot spring data jpa bootstrapPaginator 实现分页
- spring boot分页组件
- Spring boot分页
- spring boot mybatis结合初探
- spring-boot与mybatis结合
- Spring boot 与RestEasy结合
- Spring Boot + JPA + Freemarker 实现后端分页 完整示例
- spring security4学习(二)spring-boot结合spring security实现http basic Authentication
- Eayui 权限菜单的实现
- Foundation构架秘籍
- 全局变量和局部变量在内存中的区别
- BW 代码优化
- 人月神话读书笔记(11)----未雨绸缪
- Android Studio中代码混淆
- eayui结合Spring Boot实现客户端分页
- NYOJ 514 1的个数
- sql------总计
- Linux-(C/C++)动态内存分配malloc以及相关学习
- RXJAVA初接触
- Linux控制界面文字显示位置
- PHP中绘制图像的一些函数总结
- 31.Which statement is true about the UNDO_RETENTION parameter when retention guarantee is not enable
- C和指针之初识篇