- 浏览: 450091 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
ubuntu的疯狂:
推荐一份完整的教程:http://blog.ddlisting ...
Emberjs学习 -
ptz19:
请问,如果把合并前的文件,不要dest 目标目录来。如: js ...
gulp下静态资源的合并、压缩、MD5后缀 -
zhouzq1008:
楼主,还有个问题,<a href="" ...
gulp下静态资源的合并、压缩、MD5后缀 -
zhouzq1008:
感谢楼主,用到了您的代码, 但现在好像有改动 否则会报错:修改 ...
gulp下静态资源的合并、压缩、MD5后缀 -
denverj:
感谢分享~
Emberjs学习
改造自MultiselectItemSelector(http://extjs.com/learn/Extension:Multiselect)。
原有代码在关闭该控件以后,会遗留大量无效代码,因此,自己用一个 panel + 2个grid来实现,暂不支持拖拽。
Ext.namespace('Ext.ux') Ext.ux.IconPanel = function(config){ Ext.apply(this,config); Ext.ux.IconPanel.superclass.constructor.call(this,config); } Ext.extend(Ext.ux.IconPanel,Ext.Panel,{ imagePath:'', drawUpIcon:true, drawDownIcon:true, drawLeftIcon:true, drawRightIcon:true, drawTopIcon:true, drawBotIcon:true, //style: 'padding-left:5px;padding-right:5px', initComponent: function(){ Ext.ux.IconPanel.superclass.initComponent.call(this); this.addEvents( '' ) }, onRender: function(ct, position){ Ext.ux.IconPanel.superclass.onRender.call(this,ct,position); if (this.imagePath!="" && this.imagePath.charAt(this.imagePath.length-1)!="/") this.imagePath+="/"; this.iconUp = this.imagePath + (this.iconUp || 'up2.gif'); this.iconDown = this.imagePath + (this.iconDown || 'down2.gif'); this.iconLeft = this.imagePath + (this.iconLeft || 'left2.gif'); this.iconRight = this.imagePath + (this.iconRight || 'right2.gif'); this.iconTop = this.imagePath + (this.iconTop || 'top2.gif'); this.iconBottom = this.imagePath + (this.iconBottom || 'bottom2.gif'); var el= this.getEl(); if (!this.toSortField) { this.toTopIcon = el.createChild({tag:'img', src:this.iconTop, style:{cursor:'pointer', margin:'2px'}}); el.createChild({tag: 'br'}); this.upIcon = el.createChild({tag:'img', src:this.iconUp, style:{cursor:'pointer', margin:'2px'}}); el.createChild({tag: 'br'}); } this.addIcon = el.createChild({tag:'img', src:this.switchToFrom?this.iconLeft:this.iconRight, style:{cursor:'pointer', margin:'2px'}}); el.createChild({tag: 'br'}); this.removeIcon = el.createChild({tag:'img', src:this.switchToFrom?this.iconRight:this.iconLeft, style:{cursor:'pointer', margin:'2px'}}); el.createChild({tag: 'br'}); if (!this.toSortField) { this.downIcon = el.createChild({tag:'img', src:this.iconDown, style:{cursor:'pointer', margin:'2px'}}); el.createChild({tag: 'br'}); this.toBottomIcon = el.createChild({tag:'img', src:this.iconBottom, style:{cursor:'pointer', margin:'2px'}}); } if (!this.readOnly) { if (!this.toSortField) { this.toTopIcon.on('click', this.toTop, this); this.upIcon.on('click', this.up, this); this.downIcon.on('click', this.down, this); this.toBottomIcon.on('click', this.toBottom, this); } this.addIcon.on('click', this.fromTo, this); this.removeIcon.on('click', this.toFrom, this); } if (!this.drawUpIcon || this.hideNavIcons) { this.upIcon.dom.style.display='none'; } if (!this.drawDownIcon || this.hideNavIcons) { this.downIcon.dom.style.display='none'; } if (!this.drawLeftIcon || this.hideNavIcons) { this.addIcon.dom.style.display='none'; } if (!this.drawRightIcon || this.hideNavIcons) { this.removeIcon.dom.style.display='none'; } if (!this.drawTopIcon || this.hideNavIcons) { this.toTopIcon.dom.style.display='none'; } if (!this.drawBotIcon || this.hideNavIcons) { this.toBottomIcon.dom.style.display='none'; } }, toTop:function(){ this.gridsHolder.fireEvent('toTop'); }, toBottom: function(){ this.gridsHolder.fireEvent('toBottom'); }, up: function(){ this.gridsHolder.fireEvent('up'); }, down: function(){ this.gridsHolder.fireEvent('down'); }, fromTo: function(){ this.gridsHolder.fireEvent('fromTo'); }, toFrom: function(){ this.gridsHolder.fireEvent('toFrom'); }, setGridsHoder: function(gridsHolder){ this.gridsHolder = gridsHolder; } }); Ext.ux.MultiSelectWin = function(config){ Ext.apply(this,config); Ext.ux.MultiSelectWin.superclass.constructor.call(this, config); this.init(); }; Ext.extend(Ext.ux.MultiSelectWin, Ext.util.Observable,{ title : '选择窗口', from_legend:'可选', to_legend: '已选', valueField: 'id', displayField: 'name', warningTitle: '提示', minLength:0, maxLength:Number.MAX_VALUE, minLengthText:'至少应选择{0}项', maxLengthText:'最多只能选择 {0}项', /** * 图标面板的config * @type {} */ iconConfig:{}, targetItem: null, localData:[], selectedData: [], saveFn: Ext.emptyFn, searchFn: Ext.emptyFn, baseParams: null, fieldName: null, toSortField:null, fromSortField:null, toSortDir:'ASC', fromSortDir:'ASC', allowDup: false, switchToFrom:false, openHeight:320, openWidth:460, ms_height:220, ms_width:200, init: function(){ this.initDataStore(); this.initComponent(); }, initDataStore: function(){ var record = Ext.data.Record.create([ { name: this.valueField, type: 'string' },{ name: this.displayField, type: 'string' }]); if (this.localMode == true){ this.fromStore = new Ext.data.SimpleStore({ fields:[this.valueField, this.displayField] }); } else{ var baseParams = { dir : 'asc', start : 0, limit : 0 }; if (this.baseParams) baseParams = this.baseParams; this.fromStore = new Ext.data.Store({ proxy: new Ext.data.DWRProxy(this.searchFn, true), reader: new Ext.data.ListRangeReader({ totalProperty : 'total', id : 'id' },record), sortInfo:{field:this.displayField,direction:'ASC'}, baseParams : baseParams }); } this.selectedData = this.targetItem.getArrayValue(); this.toStore = new Ext.data.SimpleStore({ fields:[this.valueField, this.displayField], data: this.selectedData }); if(this.allowDup == false){ this.fromStore.on('load',function(){ this.fromStore.filterBy(function(record){ for (var i=0;i < this.selectedData.length;i++){ if(this.selectedData[i][0] == record.get(this.valueField)) return false; } return true; },this); },this); } if(this.localMode == true) this.fromStore.loadData(this.localData); else this.fromStore.load(); }, reComputeWH: function(){ this.openHeight = this.openHeight; this.openWidth = this.openWidth; this.ms_height = this.openHeight - 100; this.ms_width = (this.openWidth-60)/2; }, createIconsPanel: function(){ this.iconsPanel = new Ext.ux.IconPanel(this.iconConfig); this.iconsPanel.setGridsHoder(this); }, initComponent: function(){ if(this.openHeight || this.openWidth){ this.reComputeWH(); } this.addEvents( /** * @event */ 'destroy', /** * @event */ 'toTop', /** * @event */ 'toBottom', /** * @event */ 'up', /** * @event */ 'down', /** * @event */ 'fromTo', /** * @event */ 'toFrom'); this.on('destroy', this.onDestroy, this); this.on('up', this.onUp, this); this.on('down', this.onDown, this); this.on('toTop', this.onToTop, this); this.on('toBottom', this.onToBottom, this); this.on('fromTo', this.onFromTo, this); this.on('toFrom', this.onToFrom, this); this.fromGrid = new Ext.grid.GridPanel({ title : '可选', hideHeaders:true, width : this.ms_width, height: this.ms_height, autoExpandColumn:'name', layout : 'fit', sm : new Ext.grid.RowSelectionModel(), ds : this.fromStore, cm : new Ext.grid.ColumnModel([{ header : "header", sortable : true, dataIndex : this.displayField }]), viewConfig:{forceFit:true} }) this.fromGrid.on('rowdblclick', this.onFromGriddblclick, this); this.toGrid = new Ext.grid.GridPanel({ title : '已选', hideHeaders:true, width : this.ms_width, height: this.ms_height, autoExpandColumn:'name', layout : 'fit', sm : new Ext.grid.RowSelectionModel(), ds : this.toStore, cm : new Ext.grid.ColumnModel([{ header : "header", sortable : true, dataIndex : this.displayField }]), viewConfig:{forceFit:true} }) this.toGrid.on('rowdblclick', this.onToGriddblclick, this); this.createIconsPanel(); this.parentPanel = new Ext.Panel({ layout:"table", layoutConfig:{columns:3}, items: [this.fromGrid,this.iconsPanel,this.toGrid], frame: true }); this.selectorWin = new Ext.Window({ frame: true, resizable:false, title : this.title, layout:'fit', modal: true, items : [this.parentPanel], width: this.openWidth, height: this.openHeight, buttonAlign:'center', buttons:[{ text: '确定', handler: function(){ var records = this.toStore.getRange(); if(this.validateValue(records) == false) return; var values = []; var selectedValue = ''; var selectedText = ''; for (var i=0; i < records.length; i++){ var temp = []; var v = records[i].get(this.valueField); var t = records[i].get(this.displayField); temp.push(v); temp.push(t); values.push(temp); if(selectedValue == ''){ selectedValue = v; selectedText = t; } else{ selectedValue = selectedValue + ',' + v; selectedText = selectedText + ',' + t; } } this.targetItem.setValue(values); var formValues = queryPanel.getFormValues(); Ext.apply(formValues,this.baseParams); formValues.selectedValue = selectedValue; formValues.selectedText = selectedText; var fn = this.saveFn.createSequence(function(returnData){}); fn(formValues); this.selectorWin.close(); }, scope:this },{ text:'取消', handler: function(){ this.selectorWin.close(); }, scope: this }] }) this.selectorWin.show(); }, validateValue : function(value){ if (value.length < this.minLength) { Ext.Msg.show({ title: this.warningTitle, msg: String.format(this.minLengthText, this.minLength), buttons: Ext.Msg.OK, icon: Ext.MessageBox.INFO }); return false; } if (value.length > this.maxLength) { Ext.Msg.show({ title: this.warningTitle, msg: String.format(this.maxLengthText, this.maxLength), buttons: Ext.Msg.OK, icon: Ext.MessageBox.INFO }); return false; } return true; }, onFromGriddblclick: function(){ this.fireEvent('fromTo'); }, onToGriddblclick: function(){ this.fireEvent('toFrom'); }, onUp:function(){ var store = this.toStore; var sm = this.toGrid.getSelectionModel(); var data = sm.getSelections(); var selectionsArray = []; for (var i=0; i < data.length; i++){ selectionsArray.push(store.indexOf(data[i])); } var record = null; selectionsArray.sort(); var newSelectionsArray = []; if (selectionsArray.length > 0) { for (var i=0; i<selectionsArray.length; i++) { record = store.getAt(selectionsArray[i]); if ((selectionsArray[i] - 1) >= 0) { store.remove(record); store.insert(selectionsArray[i] - 1, record); newSelectionsArray.push(selectionsArray[i] - 1); } } this.toGrid.getView().refresh(); sm.selectRows(newSelectionsArray); } }, onDown: function(){ var store = this.toStore; var sm = this.toGrid.getSelectionModel(); var data = sm.getSelections(); var selectionsArray = []; for (var i=0; i < data.length; i++){ selectionsArray.push(store.indexOf(data[i])); } var record = null; selectionsArray.sort(); selectionsArray.reverse(); var newSelectionsArray = []; if (selectionsArray.length > 0) { for (var i=0; i<selectionsArray.length; i++) { record = store.getAt(selectionsArray[i]); if ((selectionsArray[i] + 1) < store.getCount()) { store.remove(record); store.insert(selectionsArray[i] + 1, record); newSelectionsArray.push(selectionsArray[i] + 1); } } this.toGrid.getView().refresh(); sm.selectRows(newSelectionsArray); } }, onToTop: function(){ var store = this.toStore; var sm = this.toGrid.getSelectionModel(); var data = sm.getSelections(); var selectionsArray = []; for (var i=0; i < data.length; i++){ selectionsArray.push(store.indexOf(data[i])); } var records = []; if (selectionsArray.length > 0) { selectionsArray.sort(); for (var i=0; i<selectionsArray.length; i++) { record = store.getAt(selectionsArray[i]); records.push(record); } selectionsArray = []; for (var i=records.length-1; i>-1; i--) { record = records[i]; store.remove(record); store.insert(0, record); selectionsArray.push(((records.length - 1) - i)); } } this.toGrid.getView().refresh(); sm.selectRows(selectionsArray); }, onToBottom: function(){ var store = this.toStore; var sm = this.toGrid.getSelectionModel(); var data = sm.getSelections(); var selectionsArray = []; for (var i=0; i < data.length; i++){ selectionsArray.push(store.indexOf(data[i])); } var records = []; if (selectionsArray.length > 0) { selectionsArray.sort(); for (var i=0; i<selectionsArray.length; i++) { record = store.getAt(selectionsArray[i]); records.push(record); } selectionsArray = []; for (var i=0; i<records.length; i++) { record = records[i]; store.remove(record); store.add(record); selectionsArray.push((store.getCount()) - (records.length - i)); } } this.toGrid.getView().refresh(); sm.selectRows(selectionsArray); }, onFromTo: function(){ var records = this.fromGrid.getSelectionModel().getSelections(); var selectionsArray = []; for (var i=0; i < records.length; i++){ selectionsArray.push(this.fromStore.indexOf(records[i])); } if (selectionsArray.length > 0) { if(!this.allowDup) selectionsArray = []; for (var i=0; i<records.length; i++) { record = records[i]; if(this.allowDup){ var x=new Ext.data.Record(); record.id=x.id; delete x; this.toStore.add([record]); }else{ this.fromStore.remove(record); this.toStore.add([record]); selectionsArray.push((this.toStore.getCount() - 1)); } } } this.toGrid.getView().refresh(); this.fromGrid.getView().refresh(); if(this.toSortField) this.toStore.sort(this.toSortField, this.toSortDir); if(this.allowDup) this.fromGrid.getSelectionModel().selectRows(selectionsArray); else this.toGrid.getSelectionModel().selectRows(selectionsArray); }, onToFrom: function(){ var records = this.toGrid.getSelectionModel().getSelections(); var selectionsArray = []; if (records.length > 0) { for (var i=0; i<records.length; i++) { record = records[i]; this.toStore.remove(record); if(!this.allowDup){ this.fromStore.add([record]); selectionsArray.push((this.fromStore.getCount() - 1)); } } } this.fromGrid.getView().refresh(); this.toGrid.getView().refresh(); if(this.fromSortField) this.fromStore.sort(this.fromSortField, this.fromSortDir); this.fromGrid.getSelectionModel().selectRows(selectionsArray); }, onDestroy:function(){ this.toStore = null; this.toGrid = null; this.fromStore = null; this.fromGrid = null; } }); Ext.reg('multiSelectWin',Ext.ux.MultiSelectWin);
截图
发表评论
-
EXT零零碎碎
2011-06-01 15:09 01.Grid里面可以对多个字段映射为一个字段: " ... -
给Grid行添加Tip信息:
2011-06-01 14:53 1423在EXT3中,可以使用以下方法添加Tip信息: 1.给Grid ... -
窗口随页面滚动漂浮在同一位置
2010-06-25 09:03 1506var win = new Ext.Window( ... -
FF下字体小问题
2010-06-23 16:46 1141网络上有一份patch代码,不够实际应用中有点小问题。 于是自 ... -
强制combobox每次从后台获取数据
2010-06-22 15:50 2205combobox在第一次加载数据以后,就不再往后台获取数据了, ... -
使用图片创建简单的button
2010-06-22 15:42 1200代码: //具体样式的更改可以修改 style元素 ... -
阻止退格键导致页面跳转
2010-06-22 15:27 1604阻止退格键导致页面跳转,在程序中加入以下代码: ... -
default属性的应用
2010-06-22 15:25 1108关于default属性在container容器中(panle, ... -
Grid “操作”列的plugin
2010-06-19 11:06 1257尽管EXT的常用设计是把对GRID记录的操作放在tbar或者b ... -
Ext.ux.Upload.Dialog使用
2010-06-18 10:38 1280反正网络上都很多了。就上张PP吧。 -
自定义图片按钮
2010-06-07 17:15 1421/** * 定义图片按钮 * * @para ... -
设置Grid row 的高度
2010-06-07 09:04 1860对GridPanel 的GridView添加以下配置 v ...
相关推荐
首先,`MultiselectItemSelector` 提供了一个用户友好的界面,通常会显示一个可滚动的列表,用户可以通过勾选复选框来选择多个项目。这种组件的交互设计考虑了易用性和效率,使得用户可以快速地在大量数据中进行多选...
一个使用AndroidStudio开发的校园通知APP,支持注册登录,支持聊天,后端技术:http get post 方法(分别有json数据格式和form数据格式),websocket长连接,用于接收消息,mqtt协议用于查看数据。
基于粒子群的ieee30节点优化、配电网有功-无功优化 软件:Matlab+Matpowre 介绍:对配电网中有功-无功协调优化调度展开研究,通过对光伏电源、储能装置、无功电源和变压器分接头等设备协调控制,以实现光伏利用率最大、网络损耗最小、电压质量最优的综合优化目标。 采用粒子群算法寻求最优解,得到配电网的调控策略,从而制定合理的优化运行方案。 最后通过算例分析,说明其合理性。 Matpowre(需要Matpowre请安装不然会有错)
通过自定义事件来传值。此种方法适合于写驱动程序。进行数据采集。 对于一般的系统事件,是有两个参数的,一个是sender,一个是EventArgs,对于sender,个事件的触发者,一般指向的是一个控件,但是对于EventArgs,一般常用来传递鼠标位置等信息,下面就自定义事件传值就是通过EventArgs来实现。 通过EventArgs来实现传值,我们首先需要创建一个类,继承EventArgs,我们可以将需要传递的数据,直接在类里面定义成属性,这里以传递一个布尔(没有再最终的代码内使用)、一个浮点数,一个字符串为例,
【资源说明】 基于校园的互帮互助社交APP全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
Download usage
【资源说明】 基于高德地图的校园导航全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
内容概要:本文介绍了 2020 京东健康智慧医药医疗博览会在湖南长沙举办的总体方案。该方案详细描述了展会的背景、目标、组织机构、展区规模和内容、主体活动、拟邀嘉宾及宣传媒体等内容。展会旨在展示互联网+医疗健康生态下的新技术、新产品和新方案,推动智慧医疗产业链的数据化、信息化和智慧化建设,为健康中国战略和健康湖南行动贡献力量。 适合人群:医疗行业的从业人员、智慧医疗技术开发者、政府相关部门、健康产业投资人等。 使用场景及目标:① 通过展会展示先进的医药医疗技术和产品,促进技术交流与合作;② 推动智慧医疗产业发展,助力健康中国战略和健康湖南行动的实施;③ 提高人民群众的健康水平和医疗服务质量。 其他说明:此次展会将设置十大展区,涵盖健康管理、智慧医院、精准医疗、智能穿戴、移动医疗系统、智能养老等多个方面,同期还将举办多场论坛和商务活动。
C/S架构,C++开发的,使用UDP协议
2023-04-06-项目笔记-第三百五十六阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.354局变量的作用域_354- 2024-12-23
【资源说明】 基于Bmob后台搭建的一块校园社区类APP,内置二手交易模块全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
高校学生求职就业平台(编号:24440246).zip
内容概要:本文详细介绍如何使用Python结合Pygame库制作一个充满圣诞气息的应用程序。该程序包括生成雪花、圣诞树以及闪烁星星的效果,并配以背景音乐以增加节日气氛。通过具体的代码示例,指导读者逐步构建这一有趣的项目。 适用人群:对于有兴趣探索Pygame图形库及游戏开发的基础开发者、编程初学者。 使用场景及目标:① 初步掌握Pygame的基本用法及其常见图形绘制方法;② 学习如何通过编程手段营造节日氛围;③ 作为个人项目或课堂作业的优秀实践。 其他说明:除了文中提供的基础功能外,鼓励读者在此基础上发挥创意,加入更多有趣的功能,比如动态改变场景中的物体、响应用户输入等,从而创造出独一无二的作品。
计算机程序设计员三级(选择题)
基于Spring Boot的养老院管理系统的设计与实现_6575f5w2_223-wx(1).zip
数据结构
内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
基于java的网上订餐系统(编号:96717170).zip
基于Java WEB旅游门票信息系统设计与实现_70rn7486_206-wx.zip
无刷电机永磁同步电机库,有感控制,无感控制库