miniui 查询_扩展 jquery miniui 组件实现自动查询数据

主题

之前写过一篇文章分享了公司basecode查找数据后台是怎么实现的(http://www.cnblogs.com/abcwt112/p/6085335.html).今天想分享一下公司前台是怎么扩展jquery miniui组件去配合后台实现自动查找数据的.

一个使用例子

项目中多多少少会遇到要下拉一些数据(不只是下拉,可能还有选择框等等).

这些数据来自数据库里的某张代码表(当然也可以是复杂的SQL查询).这些数据写死在前台明显是不可能的,因为不同环境下配置的数据可能不同.但是为了每个下拉框去写一个Controller方法,Service方法.Dao方法...好像代价又太大了,而且他们具有一定的同性.这就是Basecode的存在的一个原因.

前台实现

后台的实现请参考我另外一篇文章,这篇文章主要分享下怎么扩展jquery miniui组件(miniui是类似于jquery easyui的一个前台JS框架)来实现前台自动发送请求加载数据实现basecode的下拉.

jquery miniui不是开源的,所以自己写组件继承起来比较蛋疼...但是多多少少还是可以做一些简单的扩展的.

一个最简单的代码表下拉的例子

实现basecode自动下拉的主要原理是利用了beforeload事件.

我们自己定义的组件继承了原本miniui的组件,重写了部分方法,在组件在初始化的时候额外加入了beforeload事件并触发,这样这个组件就会自动去后台查找数据了.

1 mini.extend(framework.component.ComboList , mini.ComboBox , {2

3 codeType : "", //绑定代码类型

4

5 remote : false, //是否从远端加载数据

6

7 textField : "label",8

9 uiCls: "mini-ext_combolist",10

11 valueField : "value",12

13 queryparam : {},14

15 /**16 * 重定义加载数据的方法,根据codeType指定的加载数据17 */

18 load : function(data){19 if(this.codeType && this.codeType.length > 0){20 if(basecode[this.codeType] && !this.remote){21 this.setData(basecode[this.codeType]);22 }else{23 this.setUrl(common.getBascodeUrl()+"/"+this.codeType);24 }25 }26 },27

28 set : function(kv){29 var me = this;30 framework.component.ComboLis

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 jQuery MiniUI 实现 mini-combox 跨页多选,可以按照以下步骤进行: 1. 引入 jQueryMiniUI 的相关文件: ```html <script src="jquery.min.js"></script> <script src="miniui/miniui.js"></script> <link href="miniui/themes/default/miniui.css" rel="stylesheet" /> <link href="miniui/themes/icons.css" rel="stylesheet" /> ``` 2. 创建 mini-combox 组件并设置相关属性: ```html <input id="myCombox" name="myCombox" class="mini-combobox" value="" showNullItem="true" popupWidth="250" onvaluechanged="onValueChanged" /> ``` 其中,`onvaluechanged` 属性绑定了一个回调函数,用于在用户选择选项后更新选择结果。 3. 在 JavaScript 中初始化 mini-combox 组件并设置数据源: ```javascript $(function() { var myCombox = mini.get("myCombox"); myCombox.setData([{ id: 1, text: "选项1" }, { id: 2, text: "选项2" }, { id: 3, text: "选项3" }, { id: 4, text: "选项4" }, { id: 5, text: "选项5" }, { id: 6, text: "选项6" }, { id: 7, text: "选项7" }, { id: 8, text: "选项8" }, { id: 9, text: "选项9" }, { id: 10, text: "选项10" }]); }); ``` 其中,`setData` 方法用于设置 mini-combox 的数据源。 4. 实现多页加载和多选功能: ```javascript var pageSize = 5; // 每页显示的选项数 var selectedItems = []; // 保存用户选择的选项 function onValueChanged(e) { // 当用户选择一个选项时触发 var item = e.selected; if (item) { // 如果选项还没有被选择过,则添加到选择结果列表中 if ($.inArray(item.id, selectedItems) == -1) { selectedItems.push(item.id); } } else { // 如果选项已经被选择过,则从选择结果列表中移除 var index = $.inArray(e.value, selectedItems); if (index >= 0) { selectedItems.splice(index, 1); } } } function loadPage(pageIndex) { // 加载指定页的选项并更新 mini-combox 的数据源 var start = pageIndex * pageSize; var end = start + pageSize; var data = [{ id: -1, text: "全部" }].concat(selectedItems.map(function(id) { return { id: id, text: "选项" + id }; })).concat(myData.slice(start, end)); var myCombox = mini.get("myCombox"); myCombox.setData(data); } $(function() { var myData = [{ id: 1, text: "选项1" }, { id: 2, text: "选项2" }, { id: 3, text: "选项3" }, { id: 4, text: "选项4" }, { id: 5, text: "选项5" }, { id: 6, text: "选项6" }, { id: 7, text: "选项7" }, { id: 8, text: "选项8" }, { id: 9, text: "选项9" }, { id: 10, text: "选项10" }]; // 初始化 mini-combox 组件 var myCombox = mini.get("myCombox"); myCombox.set({ pageSize: pageSize, onbeforeload: function(e) { var pageIndex = e.pageIndex; loadPage(pageIndex); e.cancel = true; // 取消默认的数据加载方式 } }); loadPage(0); }); ``` 其中,`loadPage` 方法用于加载指定页的选项并更新 mini-combox 的数据源。`selectedItems` 数组保存用户选择的选项,其中的元素为选项的 ID。在 `onValueChanged` 回调函数中,每当用户选择或取消一个选项时,都会更新 `selectedItems` 数组,并调用 `loadPage` 方法重新加载 mini-combox 的数据源。同时,为了实现多选功能,需要在每个选项前面添加一个复选框,并在选择结果列表中保存用户选择的所有选项。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值