JQuery easyUI combobox 数据过滤(filter)

1、jsp/js文件:

<select id="cc" class="easyui-combogrid" name="saleMan.id" style="width:200px;border:0;" 
     data-options=" 
    panelWidth:550, 
    value:'${order.saleMan.id }', 
    idField:'id',
    textField:'userName', 
    pagination:true,
    required:true, 
    editable:true,
     mode:'remote', // 如果为 'local'的话, 那么过滤的是本地数据, 默认是'local'
    url:'/sys/sysUserAccess/searchSaleMan.jhtml', 
    columns:[[ 
        {field:'userName',title:'姓名',width:100}, 
        {field:'account',title:'帐号',width:100}, 
        {field:'unitName',title:'组织',width:120,formatter:function(value,row){if(row.sysUnit!=null){ return             row.sysUnit.name;}}}, 
    ]],
     filter: function(q, row){
        var opts = $('#cc').combobox('options');
        return row[opts.textField].indexOf(q) == 0;
    },
     formatter:function(row){ 
        var opts = $('#cc').combobox('options');
        return row[opts.textField]; 
    }

"></select>
说明: 注意红色 和 加粗部分

2、 后台代码

    1)、定义全局变量 q, 
    2)、通过request.getParameter("q");
    然后将q作为参数,进行数据的筛选

    如: 
if (StringUtils.isNotBlank(q)) {
        for (int i = 0; i < users.size(); i++) {
            SysUser su = users.get(i);
            if (su.getAccount().contains(q)) {
                rList.add(su);
                continue;
            }
            if (su.getUserName().contains(q)) {
                rList.add(su);
                continue;
            }
            if (su.getSysUnit() != null && su.getSysUnit().getName().contains(q)) {
                rList.add(su);
            }
        }
} else {
    rList = users;
}

说明:  rList  是临时变量, 最为返回的数据
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,针对您的问题,我来给您讲一讲如何实现 EasyUI Combobox 的 AJAX 分页和默认值扩展。 首先,我们需要在服务器端提供一个接口,用于返回分页数据。这个接口需要接受两个参数,一个是当前页数,另一个是每页显示的记录数。然后根据这两个参数进行数据查询,最后将查询结果返回给客户端。 接下来,我们需要在客户端的 Combobox 中配置 AJAX 分页参数。具体来说,我们需要设置以下几个属性: - url:指定服务器端接口的地址。 - method:指定 AJAX 请求的 HTTP 方法,可以是 GET 或 POST。 - queryParams:指定请求参数,包括当前页数和每页显示的记录数。 - loadFilter:指定请求成功后如何处理返回的数据,这里需要将数据格式转换成 Combobox 能够接受的格式。 下面是一个示例代码: ```javascript $('#combobox').combobox({ url: 'http://example.com/data', method: 'get', queryParams: { page: 1, rows: 10 }, loadFilter: function(data){ var result = []; for(var i=0; i<data.rows.length; i++){ result.push({ value: data.rows[i].id, text: data.rows[i].name }); } return result; } }); ``` 其中,`data` 是从服务器端返回的数据,包括 `total`(总记录数)和 `rows`(当前页的记录列表)。在 `loadFilter` 函数中,我们将 `rows` 转换成 Combobox 能够接受的格式,即 `{value: id, text: name}`。 接下来,我们需要实现默认值扩展。具体来说,我们需要在 Combobox 中添加一个“全部”或“请选择”选项,并将其作为默认选项。当用户选择这个选项时,我们需要清空 Combobox 中的其他选项。 以下是一个示例代码: ```javascript $('#combobox').combobox({ valueField: 'id', textField: 'name', data: [{ id: '', name: '全部' }, { id: 1, name: '选项1' }, { id: 2, name: '选项2' }], onSelect: function(record){ if(record.id === ''){ $(this).combobox('clear'); } } }); ``` 其中,我们在数据中添加了一个空值选项(id 为空),并将其名称设为“全部”。在 `onSelect` 事件中,当用户选择了空值选项时,我们调用 `clear` 方法清空 Combobox 中的其他选项。 以上就是 EasyUI Combobox 的 AJAX 分页和默认值扩展的实现方法。希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值