Advertisement

java实现layui静态表格分页_Layui.Table前台分页和后端真分页

阅读量:

当前信息发布的进程较为顺利,在前端应用中已成功集成并部署了 layui 的插件功能。项目即将结束时发现整体运行状态极为良好。在最终阶段需要处理多个分页列表时,默认遵循文档操作流程却出现了问题。这一现象给我带来了诸多困扰,并且难以找到合适的解决方案。在此分享一种可行的解决办法

1⃣️--------------- js ----------------

layui.use('table', function() {

var table = layui.table;

$.ajax({

type: "get",

url: releaseBasePath + '/selectReleaseData?typeId=' + $("#typeId").val(), // 数据接口

async: true,

success: function(r) {

var obj = JSON.parse(r);

var data = obj.data;

table.render({

elem: '#moreRelease',

data: data,

height: 515,

cols : [ [ // 表头

{

field : 'title',

title : '标题',

sort : true,

align : 'left',

width : '41%',

event : 'seeDetail',

style: 'cursor: pointer;'

},{

field : 'releaseUserName',

title : '发布人',

width : '15%',

align : "center",

sort : true

}, {

field : 'releaseDeptName',

title : '发布部门',

width : '20%',

align : "center",

sort : true

}, {

field : 'releaseTime',

title : '发布时间',

width : '25%',

align : "center",

sort : true

} ] ],

skin: 'row', //表格风格

even: true, //隔行背景

page: true, //是否显示分页

limits: [5, 10, 15], //显示

limit: 10 //每页默认显示的数量

});

}

});

// 监听单元格事件

table.on('tool(detail)', function(obj) {

var data = obj.data;

if (obj.event === 'seeDetail') {

window.open(releaseBasePath + "/seeRelease?id=" + data.id);

}

});

})

⚠️注:在开发过程中发现了问题,在设计布局时请避免同时使用alignfixed。这会导致出现一条很奇怪的竖线。

2⃣️--------------- controller ----------------

@RequestMapping(value = "/selectReleaseData", method = RequestMethod.GET)

@ResponseBody

public String selectReleaseData(String typeId) {

List releaseList = releaseInfoService.selectReleaseByTypeId(typeId);

JSONObject jsonObject = new JSONObject();

jsonObject.put("code", 0);

jsonObject.put("msg", "");

jsonObject.put("count", releaseList.size());

jsonObject.put("data", releaseList);

return jsonObject.toString();

}

这个返回可以根据Layui Api的格式,查询出所有的数据,返回即可。

==================================================

介意上面的这种方式进行优化,通过PageInfo封装,后台真分页。

在JavaScript中对table.render进行配置时,在其属性中可以设置特定参数来实现功能。

request: {

pageName: 'pageStart', //页码的参数名称,默认:page

limitName: 'pageSize' //每页数据量的参数名,默认:limit

},

后台系统需要接收这两个分页控制参数,并被定义为在ReleaseInfoEntity实体中。

@RequestMapping(value = "/selectReleaseData", method = RequestMethod.GET)

@ResponseBody

public String selectReleaseData(RequestViewPoint request, ReleaseInfoEntity releaseInfoEntity) throws UnsupportedEncodingException {

String title = releaseInfoEntity.getTitle();

//如果是IE浏览器,则用URLEncode解析

if(isMSBrowser(request)){

title = URLDecoder.decode(title, "UTF-8");

}

int page = releaseInfoEntity.getPageStart();

int limit = releaseInfoEntity.getPageSize();

PageHelper.startPage(page, limit);

新实例化一个InfoPage对象并调用selectReleaseByEntity方法获取对应的释放信息。

JSONObject jsonObject = new JSONObject();

jsonObject.put("code", 0);

jsonObject.put("msg", "");

jsonObject.put("count", pageInfo.getTotal());

jsonObject.put("data", pageInfo.getList());

return jsonObject.toString();

}

就这样,即可实现后台的真分页,效率也会好很多。

☀️☀️☀️

全部评论 (0)

还没有任何评论哟~