easyui使用总结

1   概述

        本文档内容包括easyui的引入和easyui的使用实践,编写该文档的目的,主要为了给下次需要使用的easyui的同事做参考,提高开发效率。

2       EasyUI的引入说明

2.1         Jquery库引用

项目中使用EasyUI版本为1.3.3版本其中中自带了Jquery的库,版本是V2.0.0,请注意该版本不一定适用于你的项目场景,关于Jquery V2.0.0对IE浏览器的支持也是每一个开发人员需要注意的。Jquery V2.0.0支IE9+。为了统一项目中的jquery版本,所以就把easyui自带的jquery版本换成项目中使用的版本1.7.2。

2.2         关于easyui包目录结构调整说明

通常从jquery-easyui官网中下载下来的包,是一个相当完整的包其中包括一下文件夹及目录:

demo目录是easyui使用示例;

locale目录是国际化支持;

src目录是部分easyui插件的源码;

plugins目录是easyui使用的插件;

themes目录包含多套easyui可使用的主题。

通常在项目中使用的话,demo目录、src目录可以不用,locale可以去除没用的js库,主题如果只使用默认的主题,也可以去除不用的主题。

2.3         使用easyui需要引用的js和css

要使用easyui的功能,需要引入一下样式及js。引入代码如下

<link rel="stylesheet" type="text/css" href="<%=webContext %>/js/jquery-easyui/themes/gray/easyui.css">

<link rel="stylesheet" type="text/css" href="<%=webContext %>/js/jquery-easyui/themes/icon.css">

<script type="text/javascript" src="<%=webContext %>/js/jquery/jquery-1.7.2.min.js"></script>

<script type="text/javascript" src="<%=webContext %>/js/jquery-easyui/jquery.easyui.min.js"></script>

<script type="text/javascript" src="<%=webContext %>/js/jquery-easyui/locale/easyui-lang-zh_CN.js"></script>

Js和css文件说明:

        easyui.css是easyui框架的主样式;

        icon.css是easyui中用到的图标的样式;

        jquery-1.7.2.min.js是easyui使用的基础;

        jquery.easyui.min.js是easyui的核心javascript库;

        easyui-lang-zh_CN.js是easyui对中文的国际化支持;

3       关于easyui控件的使用

        easyui库作为一个相对成熟的js前端框架,提供了非常丰富的UI控件,包括form表单控件、layout布局控件、gird控件等等。

        这里对使用easyui控件过程中的一些注意事项进行说明。

3.1         控件组成部分

每一个easyui控件通常都是由属性(Properties)、事件(Events)和方法(Methods)这些组成部分

控件自身用到的信息可以通过属性存储,控件可以利用某些属性(比如url)完成特定的操作;控件基于事件驱动,开发人员可以在控件初始化的时候,为控件绑定一些特定事件(比:form的onSubmit事件);easyui为每个控件提供了操作控件相关内容的函数,每个函数对应特定的功能(比如:datagrid的options方法,可以获取datagrid控件的属性设置)。

 

 

小贴士:对控件属性、事件、方法的理解,可以参考HTML的input元素(有属性、事件)。

3.2         控件的继承特性

        在easyui中使用了继承特性,在定义了一部分基础控件的基础上(比如:tree、combo等),可以扩展出功能更完善的控件,比如:基于combo的扩展combotree、combogrid、combobox,基于panel的扩展有tab、layout、Accordion等。

        Easyui控件的继承特性,在父控件中定义的属性适用于子控件,比如有这么一个业务场景,combobox中输入框默认是可以编辑,在我们的业务上需要屏蔽对combobox的编辑功能。针对刚才的业务场景,我们去查看combobox的属性(通常控件的属性可以对控件进行控制),但是在combobox的一堆属性中没有一个可以用于控制输入框的编辑性。不过由于easyui控件拥有继承特性,父控件中定义的属性适用于子控,所以可以查看combobox继承了哪些控件,API告诉我们combobox继承了combo这个控件,同时combo的属性中有editable这一项,专门用于控制编辑框的可编辑性,所以easyui控件的继承特性很好的解决了我们项目中遇到的问题。

3.3         调用控件的方法

Easyui控件在初始化之后,javascript语言中对控件的操作通过控件相关的方法完成。

下面通过combobox控件来说明怎样来调用控件的方法:

var options = $(“#datagrid”).datagrid(“options”);

$(“#datagrid”)通过控件的id熟悉,通过Jquery获取到datagrid对象;

获取datagrid对象后,接控件名称,参数是控件中提供的方法名。

3.4         修改控件的属性

Easyui中控件初始化时,所有的初始化信息(包括属性的值、事件对应调用函数)都存储在一个javascript对象中,基本上所有的控件都提供了一个方法“options”,通过这个方法可以获取到这个对象。下面的例子是修改datagrid控件的url属性:

var options = $(“#datagrid”).datagrid(“options”);

options.url = “targetUrl”;

说明:easyui控件的属性都可以作为options的属性来操作,达到修改的目的,特别说明,对datagrid控件的url属性的修改会触发一次datagrid的远程调用。所以这个需要慎重。如果没处理好就可能引起二次加载的问题。

3.5         控件事件的注册

Easyui控件支持事件,当相应的操作触发时,可以调用特定的函数,完成自定义的处理动作。

下面的几个例子用来说明怎么注册:

例子一 在初始化tab控件的时候注册onSelect事件

<!—- 普通的HTML代码 -->

<div id="baseTab" >

       <div id="tab001" title="电脑清单" selected="true"></div>

       <div id="tab002" title="笔记本清单"></div>

       <div id="tab003" title="网线清单"></div>

</div>

<script type="text/javascript">

$(function(){

       $('#baseTab').tabs({  

           border:false, plain:true, fit:true, tools:'#tab-tools',

           onSelect:function(title,index){             

                     localSearch();

              }  

       });});

</script>

说明如下

上面的HTML代码没有任何特别之处,着重解释js初始化的动作。

上面的js代码可以分成两部分:$('#baseTab').tabs()和{border:false,…},两部分的结合使用代表tab控件的初始化,tabs方法的参数是一个javascript对象,如上所说,在该对象中就包括了对tabs控件属性的赋值,比如border的值false;以及注册了onSelect事件,其中函数的参数,在easyui提供的api中有说明。

例子二 在HTML中为Editor注册onSelect事件

<!—- 普通的HTML代码 -->

<th editor='{type:"combobox",options:{onSelect:onSelectDeviceType,valueField:"itemValue",textField:"itemName",data:<c:out value="${deviceType}" />}}' data-options="field:'deviceType' ">设备类型</th>

<!—- Js处理脚本-->

<script type="text/javascript">

function onSelectDeviceType(){

    //处理过程

}

</script>

说明如下

HTML中为Editor控件注册了onSelectDeviceType,同时需要在script脚本中提供该函数。

例子三 初始化datagrid后注册onDblClickCell事件

<!—js代码  -->

table.datagrid({

              onDblClickCell:function(rowIndex,field,value){}

       });

说明如下

同js初始化控件一样,不过在函数对应的参数中,只指定了要注册的事件。

 

4       关于Datagrid

4.1         Datagrid中列表宽度的设置建议

        Datagrid的column有width属性,说明column是可以精确的指定列的宽度,极端的做法是每列指定具体的值。如果预留一列不设置width属性,系统会为其他列分配宽度后,将剩余的宽度留给该列,注意一点:未设置列宽的column其具体的width值未知,但是大概可以判断出他的值,根据业务需要,决定是否设置具体的width。但是这样自动计算最后一列的宽度就容易影响性能,所以这里还是看界面数据量再进行设置取舍了。

4.2         关于editor的使用说明

        Easyui支持可编辑的datagrid控件,其中datagrid中行(row)的可编辑功能通过editor实现。

关于editor的几点说明:

    1、可以把editor看成一个控件,他也有一些属于自己的方法,比如getValue、setValue;

    2、在指定editor的时候,有两个参数很重要:类型和初始对象,对初始对象的理解可以当成脚本初始化控件中的参数,类型主要指编辑控件的类型,比如text、combobox、combotree等;

    3、在指定editor的类型之后,editor就关联了一个target的jquery对象,根据editor的类型,target对象的类型也不一样。有如下规律:如果editor的类型可以对应到easyui中定义的控件,则target就是一个相应类型的easyui控件;特殊的如果editor的类型是text或者numberbox等,对应的target其实就是一个普通的代表input的jquery对象;再有的话,需要根据edtior的具体类型具体判断。

4、在datagrid中,有相应的方法控制一行所有editor的编辑状态,在js脚本中需要获得行eidtor对象时,需要先调用datagrid的beginEdit,打开行编辑;

5、  js中有两种方法获取单元格对应的editor对象,分别调用datagrid对象的getEditors和getEditor方法,具体使用请参考easyui的API;

6、当editor的target中提供的事件不能满足需要的时候,需要为target对象注册更多的事件,比如为类型为text的editor注册keyup事件,这时候,需要探究target对象的本质(比如:combobox、jquery的input对象等),在此基础上为target绑定事件。

7、提交数据前需要把编辑的行关闭编辑状态endEdit

总结

        这篇文章只是简单记录easyui大概的入门及个别控件的简单用法,具体还是需要大家多实践、多差api,后期还会有问题总结更新。

转载于:https://my.oschina.net/u/1581846/blog/776179

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值