easyui combobox

本文介绍如何使用EasyUI的Combobox组件加载复杂JSON数据,包括处理嵌套数据结构及设置valueField和textField属性的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<div id=id+"_type"></div><span style="white-space:pre">	</span>
var data=[
       {"id":"create","text":"create",selected:true},//加个selected属性表示默认选择
       {"id":"delete","text":"delete"},
        {"id":"update","text":"update"},
       {"id":"retrieve","text":"retrieve/select"},
      {"id":"direct","text":"direct"},
        ]
$("#"+id+"_type").combobox({   
   //url:"josn.do",   
    width:150,
    panelHeight:'auto',//让它下拉框自适应高度
   height:30,
    valueField:'id',   
   textField:'text',
     <span style="font-family: Arial, Helvetica, sans-serif;">//value:"create", 默认选择create</span>
   data :data,
    editable:false,//不可手写编辑属性
    onSelect: function(rec){   
         //rec的数值为{"id":"create","text":"create"} 或{"id":"delete","text":"delete"}等
         if(rec.id=="delete"){
         //deleteType();
         }      
    },
   onLoadSuccess: function () { //数据加载完毕事件
//          alert("加载成功");
     }
});


获取combox中的值

$("#"+id+"_type").combobox('getValue')    判断是不是为combobox 
if($("#"+id).hasClass("combobox-f") && $("#"+id).hasClass("combo-f") &&$("#"+id).hasClass("textbox-f")) 因为combobox会有这三个样式类


combobox中的url中传过来的json的格式:


easyui-combobox加载json中对象的属性

这次做项目遇到了一个问题,在easyui-combobox加载json数据中对象的属性。后台返回的json中包含一个对象,而我想调用对象中的属性,后台返回的json如下:

{
"rows": [
{
"chances": [],
"name": "系统管理员",
"password": "admin",
"status": 1,
"userId": 1,
"userName": "admin"
},
{
"chances": [],
"name": "于经理",
"password": "123456",
"status": 1,
"userId": 2,
"userName": "yulibin"
},
{
"chances": [],
"name": "郝经理",
"password": "123456",
"status": 1,
"userId": 3,
"userName": "haominghui"
},
{
"chances": [],
"name": "吴经理",
"password": "123456",
"status": 1,
"userId": 4,
"userName": "wumingliang"
}
],
"total": 4
}

json中包含total和rows,而rows下面才是我要显示在combobox的值,API规定必须用下面格式的json:

[{
"id":1,
"text":"text1"
},{
"id":2,
"text":"text2"
},{
"id":3,
"text":"text3",
"selected":true
},{
"id":4,
"text":"text4"
},{
"id":5,
"text":"text5"
}]

按着常规讲我会像json.rows.userId 这样设置valueField属性,结果明显不行,但这并不出乎我的意料,就是出于尝试的心态。现在的问题是如何获得这个json的对象,并且调用时只用属性名userId,name。
其实,很简单就解决了,还是先看api示例:

$('#cc').combobox({
url:'combobox_data.json',
valueField:'id',
textField:'text'
});

看我是怎么解决的:

var url = "${pageContext.request.contextPath}/user_findUlist.action";
$.getJSON(url, function(json) {
$('#cc').combobox({
data : json.rows,
valueField:'userId',
textField:'name'
});
});

combobox必须按着api指定格式加载json数据,我这里的json是层层嵌套的,所以肯定不信了,那我们可以换个思路。调用Jquery提供的getJSON方法,获取到我json,在初始化combobox使指定data属性为:json.rows,OK,就这么简单!!!看,数据取到了

easyui-combobox加载json中对象的属性

easyui-combobox加载json中对象的属性




Combobox用法和方法参数:


1、 需要引入class=" easyui-combobox”

2、 参数设置需要在data-options中设置

3、 属性参数配置:

valueField:基础数据值名称绑定到Combobox(提交值)

textField:基础数据的字段名称绑定的Combobox(显示值)

mode:定义当文本改变时如何加载列表数据,当设置为remote模式下,什么类型的用户将被发送http请求参数名为'q'的服务器,以获取新的数据。

url:从远程URL来加载列表数据

method:http方法检索列表数据

data:列表中被加载的数据

filter:定义如何过滤本地数据“模式”设置为'local'

formatter:定义如何呈现行

loader:定义如何从远程服务器加载数据

4、 事件:

onBeforeLoad(param): 操作之前将数据加载,返回false就取消这个荷载作用

onLoadSuccess():触发时,远程数据加载成功

onLoadError:触发时,远程数据加载错误

ONSELECT:触发,当用户选择一个列表项

onUnselect:触发,当用户取消选择一个列表


5、方法:

options():返回选择对象

getData():返回加载的数据

loadData(data):加载列表数据

reload(url):重新加载远程数据列表

setValues(values):设置combobox的值数组

setValue(value):设置combobox的值

clear():清空combobox的值

select(value):选中指定的值

unselect(value):取消指定的值


EasyUI Combobox 是基于 jQuery 和 EasyUI 的下拉列表组件,它能够帮助开发者快速地创建一个功能强大的下拉列表。 EasyUI Combobox 支持以下特性: 1. 自动完成:根据用户输入的内容,自动匹配下拉列表中的选项,并显示匹配的选项,用户可以从匹配的选项中选择一个或多个。 2. 延迟加载:可以通过 AJAX 动态加载下拉列表的数据,从而避免加载大量数据导致页面卡顿。 3. 多选:支持用户在下拉列表中选择多个选项。 4. 数据筛选:可以通过输入关键字来搜索下拉列表中的选项,从而快速筛选出符合条件的选项。 5. 自定义显示:支持自定义下拉列表中每个选项的显示方式,包括图标、文本、HTML 等。 6. 事件处理:支持 onChange、onSelect 和 onClick 事件处理,开发者可以根据自己的需求来实现相应的逻辑。 EasyUI Combobox 的使用非常简单,只需引入相关的 JS 和 CSS 文件,并在 HTML 页面中创建一个容器元素,然后在 JavaScript 中进行初始化即可。例如: ```html <head> <link rel="stylesheet" type="text/css" href="jquery.easyui.css"> <script type="text/javascript" src="jquery.min.js"></script> <script type="text/javascript" src="jquery.easyui.min.js"></script> </head> <body> <input id="cc" class="easyui-combobox" data-options="valueField:'id',textField:'name',url:'data.php'"> </body> <script> $('#cc').combobox(); </script> ``` 以上代码中,通过设置 data-options 属性来指定 EasyUI Combobox 的配置,然后在 JavaScript 中调用 combobox() 方法来初始化即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值