使用EasyUI的combobox控件实现级联搜索条件

昨天接到一个需求,是做一个简单的查询页面,相对于目前公司系统有一个新的东西,需要实现多级机构的级联查询。公司系统的前端框架采用的是jquery-easyui-1.4.3,

在以前接触到的系统中,前端做的不是太多,有采用velocity+html的,实现这种级联倒是做过,只是没怎么记录。现在使用easyui,需要学习一下。

看了些关于easyui的东东,打算采用combobox的input来实现这个级联查询功能。

首先,combobox 实现 动态加载 选项的方法有: reload(url)  、loadData(data)---data是json格式。这点比较方便实现级联,这里要注意,关于cache的东西,我遇到一个问题就是公司系统的查询公用方法涉及到cache的,该方法会根据传入的查询sql名去判断是否直接从cache里取查询结果,而没有把传入的查询条件也作为区别点去判断是否需要重新查询数据库。因此公司系统的这个方法 只适用于一些固定的在数据库里配置的下拉框选择项的获取功能,对于我这种需要动态获取 下拉框选项的 功能不支持。这一点导致了我把reload 和 loadData都写过一遍,多做了无用功啊。最后发现两种方法都有问题之后,我才开始去查找问题,才发现原来是公用方法的问题。

以上 都是前话。现在来说 使用EasyUI的combobox控件实现级联搜索条件 的具体操作。

首先,要使用EasyUI,需要下载EasyUI的开源包。把包解压放到自己的工程里去,在jsp页面把EasyUI资源引入进去,这样我们才能在自己的页面用EasyUI的东西。

1 <link  href="${cpath}/common/jquery-easyui/themes/cupertino/easyui.css" rel="stylesheet" type="text/css" media="screen" id="easyuiTheme">
2 <link  href="${cpath}/common/jquery-easyui/themes/icon.css" rel="stylesheet" type="text/css" media="screen">
3 <link  href="${cpath}/common/jquery-easyui/themes/icon_my.css" rel="stylesheet" type="text/css" media="screen">
4
5 <script src="${cpath}/common/jquery-easyui/jquery-1.8.0.min.js" charset="utf-8" type="text/javascript"></script>
6 <script src="${cpath}/common/jquery-easyui/jquery.easyui.min.js" charset="utf-8" type="text/javascript"></script>
7 <script src="${cpath}/common/jquery-easyui/locale/easyui-lang-zh_CN.js" charset="utf-8" type="text/javascript"></script>

然后,就是写自己的页面,在页面里添加自己需要的元素,关于要使用combobox的控件的元素,添加class="easyui-combobox",(这里采用input)

 1  <table>
 2                 <tr>
 3                         <td class="td_left">
 4                             分公司名称:
 5                         </td>
 6                         <td>
 7                             <input name="fengongsi" id="fengongsi" class="easyui-combobox" value="" style="width: 220px;"/>
 8                         </td>
 9                         <td class="td_left">
10                             三级机构名称:
11                         </td>
12                         <td>
13                             <input name="sanji" id="sanji" class="easyui-combobox" value="" style="width: 220px;"/>
14                         </td>
15                         <td class="td_left">
16                             四级机构名称:
17                         </td>
18                         <td>
19                             <input name="siji" id="siji" class="easyui-combobox" value="" style="width: 220px;"/>
20                         </td>
21                     </tr>

其次,编写js方法了。不管是直接在页面写js代码 还是在页面引入js文件,都一样,只是写法不一样,个人喜好把页面和js分开,感觉这样更好,呵呵。

<script type="text/javascript" src="XXXX.js"></script>

如下:

 1 $(function() {
 2     //分公司查询
 3      $(‘#fengongsi‘).combobox({
 4               valueField:‘ID‘,
 5               textField:‘TEXT‘,
 6               filter:comboboxFilter,
 7               cache: false,
 8             url: tContextPath + ‘/common/getCodeNameByIbatis.do?SELECT_SQL_NAME=queryFenGongSiSql‘
 9             ,onSelect: function (record) {
10                   var a = record.ID;
11                    $.ajax({
12                       type: "POST",
13                       url:(你自己的查询action)  ,
14                       cache: false,
15                       dataType : "json",
16                       success: function(data){
17                               $("#sanji").combobox("loadData",data);
18                       }
19                     });
20             }
21
22         });
23      //选择分公司时清空三级四级机构
24      $(‘#fengongsi‘).combobox({
25               onChange:function(a,b){
26                    //分公司赋值
27                   $(‘#sanji‘).combobox(‘setValue‘,"");//等价于下两行
28                   $("#sanji").attr("value","");
29                   $(‘#sanji‘).combobox(‘select‘,"");
30                 //四级机构赋空值
31                   $(‘#siji‘).combobox(‘setValue‘,"");//等价于下两行
32                   $("#siji").attr("value","");
33                   $(‘#siji‘).combobox(‘select‘,"");
34
35                   $("#sanji").combobox("loadData",{});
36                   $("#siji").combobox("loadData",{});
37                 //三级机构查询
38 //                $(‘#sanji‘).combobox(‘reload‘,tContextPath + ‘/common/getCodeNameByIbatis.do?SELECT_SQL_NAME=querySanJiSql&fengongsi=‘+a);
39 //                $(‘#siji‘).combobox(‘reload‘,tContextPath + ‘/common/getCodeNameByIbatis.do?SELECT_SQL_NAME=querySiJiSql&fengongsi=‘+a);
40
41               }
42         });
43      //三级机构查询
44      $(‘#sanji‘).combobox({
45               valueField:‘ID‘,
46               textField:‘TEXT‘,
47               cache: false,
48               filter:comboboxFilter
49               ,onSelect: function (record) { //三级机构联动分公司
50                   var a = record.ID;
51                   $.ajax({
52                       type: "POST",
53                       url:(你自己的查询action链接),
54                       cache: false,
55                       dataType : "json",
56                       success: function(data){
57                            $("#siji").combobox("loadData",data);
58                       }
59                     });
60               }
61         });
62      //三级机构联动分公司时数据初始化
63      $(‘#sanji‘).combobox({
64               onChange:function(a,b){
65                   var fen = a.substr(0,4);
66                 //四级机构赋空值
67                  $(‘#siji‘).combobox(‘setValue‘,"");//等价于下两行(解决浏览器兼容问题)
68                  $("#siji").attr("value","");
69                  $(‘#siji‘).combobox(‘select‘,"");
70
71                  $("#siji").combobox("loadData",{});
72               }
73         });
74      //四级机构查询
75      $(‘#siji‘).combobox({
76               valueField:‘ID‘,
77               textField:‘TEXT‘,
78               cache: false,
79               required:false,
80               filter:comboboxFilter
81         });
82 });

至于怎么获取数据,就不写了,只要你在 写的从数据库或者从配置文件读取数据的action里,把数据组转化成json格式就OK(转化可以用fastjson包里的公用方法JSON.toJSONString(list)将查询结果转化成字符串,然后再在action层转json类型),json的键值对的名称跟在js里写的valueField、textField对应。

这样,就能实现联动的检索条件了。

()

时间: 2024-12-19 10:49:31

使用EasyUI的combobox控件实现级联搜索条件的相关文章

界面存在多个easyUI Combobox控件时,加载数据失败,或加载不正确

问题原因:当一个界面上有多个easyui ComboBox控件,且在界面加载时同时请求数据.由于数据是异步加载,会导致下拉数据源加载失败,或加载不正确(串数据). 方案一:不用在一开始设定url(data加载路径),在点击控价下拉按钮时再加载数据源. <td>处理类型:</td> <td><input id="handleType" name="handleType" panelHeight="auto"

基于MVC+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍使用EasyUI的树控件构建Web界面的相关经验. 在很多界面设计上,我们可能都需要引入树列表控件,这个控件可以用zTree来实现,也

基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍使用EasyUI的树控件构建Web界面的相关经验. 在很多界面设计上,我们可能都需要引入树列表控件,这个控件可以用zTree来实现,也

(转)基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

http://www.cnblogs.com/wuhuacong/p/3669575.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍使用EasyUI的树控件构建Web界面

C#在窗口中ComboBox控件中加载数据库数据

首先,窗体一加载,绑定省份和城市数据 //窗口加载事件 private void register_Load(object sender, EventArgs e) { bindPro();//绑定省份数据函数 } /// <summary> /// 绑定省份数据函数 /// </summary> public void bindPro() { //获取数据库数据 List<ProvinceData> list = new ProvinceDA().Select();

C# dataGridView控件中加入comboBox控件及注意事项

DataGridViewComboBoxColumn pCombo; private void Teaching_Add_Load(object sender, EventArgs e) { MyDBase DB = new MyDBase(DBUser.sserver,DBUser.DBName, DBUser.suser, DBUser.spasswd); DataSet DS= DB.GetRecordset("select * from view_teach_tmp"); da

MFC之ComboBox控件

添加内容 ComboBox_AddString(hwndCtl,lpsz) hwndCtl为此组合框的句柄,lpsz为需要添加的字符串,组合框不能直接通过id添加内容,所以需要得到这个控件的句柄,还得使用GetDlgItem()函数. 举例: HWND hwndCombo1 = GetDlgItem(hwnd,IDC_C1); //建立一个组合框,ID可以设置为IDC_C1,然后通过GetDlgItem获取这个组合框的句柄 //如果无法正常显示,需要调整此组合框的最大显示范围,在向下箭头上出现上

Combobox控件实现汉字按拼音首字母检索

Combobox控件在开发中作为下拉选项的不二之选,用的非常频繁,前几日开发过程中刚好有个需求有用到这个控件,而且客户要求增加下拉选择功能,这个简单,设置控件的自动完成属性后就解决了 this.comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;//设置自动完成的源  this.comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;//设置自动完成的的形式 发现场

自定义ComboBox控件,完美解决C#自带的ComboBox效率慢的问题

自定义ComboBox控件,完美解决C#自带的ComboBox效率慢的问题 欢迎关注http://blog.csdn.net/aaa123524457 转载请注明出处:http://blog.csdn.net/aaa123524457/article/details/47058675 在做项目的时候,用到了ComboBox来做下拉列表的功能:但是在用的时候发现C#自带的ComboBox效率非常的慢! 当然我添加的是股票.期货的合约数据,大概有几千条信息,算是比较大的.如果用到的数据很少,就可以直