12.layui分页查询

真分页

前端分页展示数据,后端分页获取数据。前台向后台传递俩分页参数,一个curr,一个limit

case.html

 <div style="width: 95%;height: auto;min-height: 700px;margin-left: 15px" >
    <table class="layui-hide" id="caseListTable" lay-filter="caseListTable">  
    </table>
 <div id="caseListTablePager" align="center"></div></div>

js脚本:

layui.laypage 基础使用方法详见:点击查看

function getCaseList(){ 
 $.ajax({ 
     type:'post', 
     dataType:'json',
     data: {curr:1, limit:10,api_url: $("#apiurl").val(),casename: $("#casename_input").val(),project: $("#project").find("option:selected").val()}, 
     url:'/getCaseList', 
     success:function(data){ 
     showCaseList(data); 
         laypage.render({ 
                 elem:'caseListTablePager' 
                 ,count: data.count  //总记录数,后端返回的记录总数 
                 ,limit: data.pageSize//每页记录数,后端返回的pageSize数据,实际为前端切换分页传入 
                 ,prev:'<' 
                 ,next:'>' 
                 ,layout: ['prev','page','next','skip','count','limit'] 
     ,jump:function(obj, first){ 
     if(!first){//首页不执行 
         //分页切换的回调 
          $.ajax({ 
             type:'post', 
             dataType:'json', 
             data:{curr:obj.curr,limit:obj.limit,api_url: $("#apiurl").val(),casename: $("#casename_input").val(),project: $("#project").find("option:selected").val()}, 
     url:'/getCaseList',
     success:function(data){
     showCaseList(data);
 }})}}});}})}

//展示获取用例列表

 function showCaseList(data) {
     var caseArr =""; 
     if(data.code=="0000"){ 
         caseArr = data.data; 
         table.render({ 
             count: data.count, 
             limit: data.pageSize, 
             elem: '#caseListTable', 
             cols: [[ {field: 'id', title: 'ID', align: 'center', sort: true, width: 80} , 
                     {field: 'caseName', title: '用例名称', align: 'center', sort: true, width: 300} ,
                    {field: 'url', title: '接口URL', align: 'center', minwidth: 420} ,  
                    {field: 'serverKey', title: '所属环境', align: 'center', width: 200} ,
                    {field: 'modifier', title: '最后修改者', align: 'center', width: 150} ,  
                    {title: '操作', width: 200, align: 'center', toolbar: '#caseEdit',} ]],
            data: caseArr 
            //page: true //关闭系统分页,使用自定义分页getCaseList() }); }}

controller核心代码:根据前端传参curr和limit进行后端数据分页处理

caselist = caseservice.selectCaseList(tcase,(curPage-1)*pageSize,pageSize);//依赖前端传参实现后端分页查询
int count = caseservice.selectCaseCount(tcase);//符合条件的记录总数,供前端分页计算使用

service核心代码:

public int selectCaseCount(Case tcase) {
        return caseMapper.selectCaseCount(tcase);
    }

public List<Case> selectCaseList(@Param("tcase")Case tcase, @Param("startIndex")int startIndex, @Param("endIndex")int endIndex) {
        return caseMapper.selectCaseList(tcase, startIndex, endIndex);
    }

mapper核心代码:

public int selectCaseCount(Case tcase);
List<Case> selectCaseList(@Param("tcase")Case tcase, @Param("startIndex")int startIndex, @Param("endIndex")int endIndex);

mapper.xml如下:

<select id="selectCaseList" resultMap="result">
        SELECT * FROM t_case WHERE state=0
        <if test="tcase.url != null">
            AND url like "%"#{tcase.url}"%"
        </if>
        <if test="tcase.caseName != null">
            AND casename like "%"#{tcase.caseName}"%"
        </if>
        <if test="tcase.project != null">
            AND project = #{tcase.project}
        </if>
        <if test="startIndex != null and endIndex != null">
            limit #{startIndex},#{endIndex};
        </if>
    </select>

    <select id="selectCaseCount" resultType="java.lang.Integer" parameterType="com.xxx.xxxx.domain.Case">
        SELECT count(*) FROM t_case WHERE state=0
        <if test="url != null">
            AND url like "%"#{url}"%"
        </if>
        <if test="caseName != null">
            AND casename like "%"#{caseName}"%"
        </if>
        <if test="project != null">
            AND project = #{project}
        </if>
    </select>

效果展示

效果展示

查询第一页10条

查询第一页请求

通过分页功能,查询第二页

查询第二页请求

layui.treegrid 是一款能够实现树状表格的 JavaScript 插件,让表格数据以树状形式展现,且支持单元格合并和拖拽调整列宽等功能。但是,由于树状表格的结构比较复杂,因此 layui.treegrid 并未提供官方的分页功能。 不过,我们可以通过一些方法实现 layui.treegrid 分页。首先,我们可以使用其他的分页插件来对表格进行分页处理,例如 Layui 官网提供的 laypage 官方分页组件。我们只需要将 laypage 分页组件和 layui.treegrid 表格配合使用即可。 其次,我们也可以通过 AJAX 加载数据的方式实现分页。这种方式需要我们在后端编写相应的分页代码,将不同页码的数据传输到前端layui.treegrid 会将这些数据渲染成树状表格形式。在这种方式下,我们需要重写 layui.treegrid 的加载数据函数,即重写“treegrid.render”方法,使其能够接受分页数据并进行相应渲染。 无论采用哪种方式,都需要注意以下几点:页面切换时需要先销毁之前的 layui.treegrid 对象并重新构建,同时在加载数据和渲染表格时,需将数据和表格数据格式一一对应。此外,还要考虑到前端页面和后台数据库的性能问题,避免出现内存泄漏或处理过慢等问题。 总体来说,layui.treegrid 分页并不难实现,只需要熟悉 layui 和树状表格原理,合理运用相关技术,就可以实现我们需求的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值