SelectPage下拉分页选择插件

1、官网资料  https://terryz.oschina.io/selectpage/demo.html

2、使用方式(下面是搬砖)

1)、资源导入 在网页上引用css样式、js脚本等文件

<!-- 基础环境引用说明 -->
<!-- jQuery 基础脚本引用 -->
<script type="text/javascript" src="jquery.min.js" >< /script>
 
<!-- 插件使用的样式表文件 -->
<link rel="stylesheet" href="selectpage.css" type="text/css">
 
<!-- 插件核心脚本 -->
<script type="text/javascript" src="selectpage.js" >< /script>

2)、HTML代码

<!-- 设置文本框为插件基本元素 -->
<input type="text" id="selectPage" >

3)、Javascript初始化插件代码

//定义数组,在服务端返回的数据也以该格式返回:Array[{Object},{...}]
var tag_data = [
    {id:1 ,name:'Chicago Bulls',desc:'芝加哥公牛'},
    {id:2 ,name:'Cleveland Cavaliers',desc:'克里夫兰骑士'},
    {id:3 ,name:'Detroit Pistons',desc:'底特律活塞'},
    {id:4 ,name:'Indiana Pacers',desc:'印第安纳步行者'}
];
//初始化插件
$('#selectPage').selectPage({
    showField : 'desc',
    keyField : 'id',
    data : tag_data
});

3、为什么用它?

1)、可以拥有多种模式

2)、可以很容易的进行AJAX回调

$('#selectPage5').selectPage({
    showField : 'name',
    keyField : 'id',
    data : 'http://aaa.com/load',
    params : function(){return {'name':'aa','sex':1};},
    //ajax请求后服务端返回的数据格式处理
    //返回的数据里必须包含list(Array)和totalRow(number|string)两个节点
    eAjaxSuccess : function(d){
        var result;
        if(d) result = d.values.gridResult;
        else result = undefined;
        return result;
    }
});

//服务端返回的JSON数据格式
//这里的示例数据,有些节点不是必须的,最重要的是list和totalRow两个节点必须存在
//所以在上面的代码中,设置了eAjaxSuccess的回调中将values.gridResult节点
//返回,因为在该节点下存在list和totalRow两个数据项
{
    "values": {
        "gridResult": {
            "pageSize": 10,
            "pageNumber": 1,
            "totalRow": 11,
            "totalPage": 2,
            "list": [
                {"name": "计算机网络","id": "1"},
                {"name": "计算机网络1","id": "2"},
                {...}
            ]
        }
    }
}

//服务端处理样例(J2EE-JFinal 的 Controller 代码)
public void loadUserList(){
    StringBuilder sb = new StringBuilder();
    List<Object> params = new ArrayList<Object>();
    if(StringUtils.isNotEmpty(getPara("userName"))){//用户姓名
        sb.append(" and name like ?");
        params.add("%" + getPara("userName") + "%");
    }
    if(StringUtils.isNotEmpty(getPara("userSex"))){//用户性别
        sb.append(" and sex = ?");
        params.add(getPara("userSex"));
    }
    if(StringUtils.isNotEmpty(getPara("userStatus"))){//用户状态
        sb.append(" and status = ?");
        params.add(getPara("userStatus"));
    }
    //用于查询初始化项目
    if(StringUtils.isNotEmpty(getPara("searchKey")) && StringUtils.isNotEmpty(getPara("searchValue"))){
        String value = getPara("searchValue");
        String[] valuearr = value.split(",");
        String searchStr = "";
        for(String val : valuearr){
            if(searchStr.length() != 0) searchStr += ",";
            searchStr += "?";
            params.add(val);
        }
        sb.append(" and " + getPara("searchKey") + " in (" + searchStr + ")" );
    }
    this.getPageInfo();
    Page<Record> plist = Db.paginate(this.getPage(),
                                     this.getPageSize(),
                                     "select *","from user where 1=1 " + sb.toString(),
                                     params.toArray());
 
    this.setAttr("userList", plist);
    renderJsp("/userMain.jsp");
}

提示 根据这一份服务端处理代码,就需要在插件初始化时指定searchField : "userName",若不指定,则会默认传递"name"字段,导致服务端接收不到模糊查询的内容

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-select是一个基于Element UI库的下拉选择组件。它提供了分页功能,可以实现通过下拉框的方式加载更多选项。通过引用和引用中的代码片段,可以看出el-select组件的使用方法。 首先,需要导入el-select组件的相关文件,可以通过以下代码引入: import selectPage from '@/views/components/component/selectPage.vue'; 然后,在el-select组件的代码中添加分页相关的属性和事件处理函数。例如,可以使用`v-model`来绑定选中的值,并使用`filterable`和`clearable`属性来实现可搜索和可清空的功能,如下所示: <el-select v-model="selectVal" filterable clearable> [2] 为了实现下拉分页,还需要在分页事件中调用相应的方法。例如,在`currentChange`事件中,可以根据当前页码获取对应的数据并更新表格,然后手动取消所有行的选中状态,并再次调用选中方法,如下所示: // 分页-当前页 async currentChange(val) { this.objTable.pagination.pageNo = val; await this.getObjTable(); this.objTable.tableData.forEach((row) => { this.$refs.objIdTable.$children.toggleRowSelection(row, false); }); this.toggleSelection(); } 同样地,在`sizeChange`事件中,可以根据每页数量改变来获取对应的数据并更新表格,然后手动取消所有行的选中状态,并再次调用选中方法,如下所示: // 分页-每页数量改变 async sizeChange(val) { this.objTable.pagination.pageSize = val; await this.getObjTable(); this.objTable.tableData.forEach((row) => { this.$refs.objIdTable.$children.toggleRowSelection(row, false); }); this.toggleSelection(); } 通过以上代码,可以实现el-select下拉分页的功能。用户可以通过下拉选择不同的页码或每页数量,然后相应的数据会被加载和更新到表格中,并且在分页的同时会手动取消所有行的选中状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值