一个easyui扩展控件的例子

本文通过一个具体的例子,详细介绍了如何在EasyUI框架下扩展自定义控件,结合jQuery和JavaScript技术,实现更丰富的用户交互体验。
(function($){
	$.parser.plugins.push("editgrid");
	$.fn.editgrid=function(options,param){
        //如果传入的options为字符串,则调用的是组件的方法
		if(typeof options == "string"){
			var method = $.fn.editgrid.methods[options];
			if(method){//判断方法是否存在
				return method(this,param);//如果方法存在,则调用方法
			} else {
                //如果方法不存在,可在此处提示或输出
            }
		}
        //通过代码定义组件
		options = options || {};
		return this.each(function(){//可能存在多个组件,需对每一个组件进行定义
			var opts = $.extend({},$.fn.datagrid.parseOptions(this),options);//获得父级组件的options并与传入的配置整合
			$.fn.datagrid.call($(this),$.extend(true,{
                //一下为自定义属性\事件等
				onDblClickRow:function(index){
					var records = $(this).editgrid('getRows');
					for(var i = 0;i<records.length;i++){
						if(i==index){					
							$(this).editgrid('beginEdit',i);
							var editors = $(this).editgrid('getEditors',index);
							if(editors && editors.length > 0){
								editors[0].target.focus();
							}
						} else {
							$(this).editgrid('endEdit',i);
						}
					}
				},
				onAfterEdit:function(index){
					$(this).editgrid('updateRow',{index:index,row:{}});
				}
			},opts));
		});
	};
	$.fn.editgrid.methods = $.extend({},$.fn.datagrid.methods,{//继承父级组件的方法,并增加或修改
		//完成编辑
		finishEdit:function(grid){
			var records = grid.editgrid('getRows');
			for(var i = 0;i<records.length;i++){
				grid.editgrid('endEdit',i);
			}
		},
		//新增记录
		addRecord:function(grid,record){
			var records = grid.editgrid("getRows");
			if(records){
				for(var i = 0;i<records.length;i++){
					grid.editgrid('endEdit',i);
				}
			}
			var index = records.length;
			grid.editgrid('insertRow',{
				index:index,
				row:record||{}
			});
			grid.editgrid('beginEdit',index);
			var editors = grid.editgrid('getEditors',index);
			if(editors && editors.length > 0){
				editors[0].target.focus();
			}
			
		},
		//删除选定的记录
		removeSelectedRecords:function(grid){
			while(true){
				var record = grid.editgrid('getSelected');
				if(record == null){
					return;
				}
				grid.editgrid("deleteRow",grid.editgrid('getRowIndex',record));
			}
		}
	});
})(jQuery);

 

jquery-easyui-1.5.5 │ ├demo:easyui普通网页演示页面代码库(可以从中参考很多组件的用法,是个非常好用的demo库。) │ ├demo-mobile:easyui手机端网页演示页面代码库(可以从中参考很多组件的用法,是个非常好用的demo库。) │ ├docs:easyui中文API文档【PDF、EXE和CHM版】(该文档系本人原创翻译制作。) │ ├extension:easyui第三方插件库(里面会收录官方提供以及第三方提供的各类优秀插件,每个插件的用法最终都会体现到API文档当中。) │ ├locale:easyui国际化资源文件库(需要用到国际化的时候就需要在页面中引用该包路径下的文件。) │ ├pluginseasyui核心功能组件分解后的独立插件库(需要配合easyloader.js一起使用。) │ ├src:easyui部分非核心组件的源代码库(核心大组件的源代码并未公布,比如datagrid、combo和tree等。) │ ├themes:easyui的皮肤库(皮肤库中会收录所有网上能找得到的皮肤,所以大家不用再去自己乱搜了。) │ ├changelog.txt:easyui版本官方更新日志文件[英文版](该文件内容可以参考API当中的更新说明。) │ ├easyloader.js:easyui组件加载器(easyui提供了2种组件加载方式,这就是其中一种,当使用该方式的时候可以不必引入jquery.easyui.min.js文件,具体用法请参看api文档。) │ ├jquery.easyui.min.js:easyui的完整组件包文件(当使用了该文件的时候就可以不必引入easyloader.js文件,具体用法请参考官方demo或api文档。) │ ├jquery.min.js:jQuery框架库文件,该版本的jQuery库提供的是最新的1.11.1版,能够支持IE6、7、8。 │ ├licence_gpl.txt:GNU开源协议文档。 │ └readme.txt:官方的说明,主要告诉你你可以购买商业版来获得完整源代码以及官方的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值