微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用

在前面介绍了两篇关于我的基于MVC4+EasyUI技术的Web开发框架的随笔,本篇继续介绍其中界面部分的一些使用知识,包括控件的赋值、取值、清空,以及相关的使用。

我们知道,一般Web界面包括的界面控件有:单行文本框、多行文本框、密码文本框、下拉列表ComboBox、日期输入控件、数值输入控件、单项选择、复选框、表格控件DataGrid、树形控件、布局控件、弹出式对话框、提示信息、列表控件等,这些界面控件的操作都有哪些不同,下面我们来逐一进行介绍。

1、单行文本框

使用easyui的控件,单行文本可以使用easyui-validateBox样式即可,类型为text的控件。

界面代码如下所示:

代码如下:

或者

代码如下:

赋值给界面控件代码如下:

代码如下:

获取界面控件的值代码如下:

代码如下:

如果是标签Lable控件,这需要把val 使用text替代即可,如下代码所示:

代码如下:

对于easyui-validateBox样式的控件,一般来说,有几个常见属性可以设置他们的。

rush:js;"> //必输项: Box" type="text" name="name" data-options="required:true"> //格式的验证: Box" type="text" name="email" data-options="validType:'email'"> Box" type="text" name="email" data-options="required:true,validType:'url'"> //长度范围的验证: Box" data-options="validType:'length[1,3]'">

2、多行文本框

easyui的界面样式,可以使用easyui-validateBox,或者认的textarea即可。

界面代码如下所示:

代码如下:
Box" required="true" style="height:100px;">

或者

代码如下:

赋值给界面控件代码如下:

代码如下:

获取界面控件的值代码如下:

代码如下:

3、密码文本框

密码文本框和常规的文本框一样,只是输入字符的时候,系统做了屏蔽显示而已,把它作为一个来独立说明,也是因为它也是常见输入的一种。

界面代码如下所示:

代码如下:

赋值给界面控件代码如下:

代码如下:

获取界面控件的值代码如下:

rush:js;"> $("#btnLogin").click(function () { var postData = { UserName: $("#UserName").val(),Password: $("#Password").val(),Code: $("#Code").val() };

4、下拉列表ComboBox

常见的EasyUI的ComboBox是可以输入,也可以从列表选择的内容的输入控件。

界面代码如下所示:

代码如下:

绑定下拉列表的数据源代码如下:

rush:js;"> $('#type_PID1').comboBox({ url: '/DictType/GetDictJson',valueField: 'Value',textField: 'Text' });

设置控件的选择的内容代码如下:

代码如下:
Box('setValue',json.PID);

获取界面控件的值代码如下:

代码如下:
stemType= $("#txtSystemType_ID").comboBox('getValue');

而利用标准的Select控件虽然可以实现从列表选择,不过不够ComboBox控件那么灵活方便,Select控件的界面代码如下:

代码如下:

5、日期输入控件

easyui使用class=‘easyui-dateBox'来标识日期控件,从弹出的层中选择正确的日期,是一种非常常见的界面输入控件,可以替代My97DatePicker日期输入控件。

弹出窗体界面效果如下。

它的界面代码如下所示:

代码如下:

赋值给界面控件代码如下:

代码如下:
Box('setValue',info.LastUpdated);

获取界面控件的值代码如下:

代码如下:
Box('getValue');

6、数值输入控件

easyui使用样式easyui-numberBox标识为数值类型,其表现为文本框,但只能输入数值。

界面代码如下所示:

代码如下:
Box" data-options="min:10,max:90,precision:2,required:true">

或者使用‘easyui-numberspinner'样式来标识,可以上下调节数值。

代码如下:
required:true" style="width:80px;">

赋值给界面控件代码如下:

代码如下:
Box('setValue',206.12);

或者

代码如下:

获取界面控件的值代码如下:

代码如下:
Box('getValue');

或者

代码如下:

7、单项选择Radio控件

单项选择Radio控件,是在多项内容里面选择一个选项进行保存或者显示

界面代码如下所示:

rush:js;"> dio" class="easyui-validateBox" checked="checked" required="true" value="Split">分隔符方式,多个数据中英文逗号,分号,斜杠或顿号[,, ; ; / 、]分开,或一行一个 
dio" class="easyui-validateBox" required="true" value="Line">一行一个记录模式,忽略所有分隔符号

赋值给界面控件代码如下:

代码如下:
dio[name="SplitType"][value="Split"]').prop('checked',true);

获取界面控件的值代码如下:

代码如下:

或者使用Comobo控件作为单项选择的控件也是可以的,界面效果如下所示。

其界面代码如下所示:

rush:js;"> dio" name="lang" value="01">Java
dio" name="lang" value="02">C#
dio" name="lang" value="03">Ruby
dio" name="lang" value="04">Basic
dio" name="lang" value="05">Fortran

8、复选框

复选框是在一项或多项内容中,选择零项或者多项的一个输入界面控件。

rush:js;"> dio" name="lang" value="01">Java
dio" name="lang" value="02">C#
dio" name="lang" value="03">Ruby
dio" name="lang" value="04">Basic
dio" name="lang" value="05">Fortran

界面代码如下所示:

代码如下:
帐号过期

由于复选框的一些特殊性质,在表单提交的时候,如果没有勾选的选型,使用serializeArray()方法构造的数据,复选框的值则不会被提交。

基于这个原因,我们可以使用Select控件进行替代,实现复选项的功能,而不影响

代码如下:

以上代码的使用。

使用Select控件的代码如下所示。

rush:xhtml;">

赋值给界面控件代码如下:

代码如下:

获取界面控件的值代码如下:

代码如下:

9、表格控件DataGrid

easyui的列表控件,可以通过指定table的class属性为easyui-datagrid即可实现表格的定义,界面代码如下所示:

rush:js;">

不过为了避免使用脚本定义datagrid导致多次初始化的问题,我们一般只需要指定一个table代码即可,界面如下所示

rush:js;"> 用户操作" iconcls="icon-view">

而表格控件的数据加载,我们使用javascript进行初始化,初始化后的表格界面显示效果如下所示。

Javascript代码如下所示,其中的width: function () { return document.body.clientWidth * 0.9 }是用来实现宽度自适应的一个操作。

rush:js;"> //实现对DataGird控件的绑定操作 function InitGrid(queryData) { $('#grid').datagrid({ //定位到Table标签,Table标签的ID是grid url: '/Menu/FindWithPager',//指向后台的Action来获取当前菜单的信息的Json格式的数据 title: '功能菜单',iconCls: 'icon-view',height: 650,width: function () { return document.body.clientWidth * 0.9 },Nowrap: true,autoRowHeight: false,striped: true,collapsible: true,pagination: true,pageSize: 100,Pagelist: [50,100,200],rownumbers: true,//sortName: 'ID',//根据某个字段给easyUI排序 sortOrder: 'asc',remoteSort: false,idField: 'ID',queryParams: queryData,//异步查询的参数 columns: [[ { field: 'ck',checkBox: true },//选择 { title: '显示名称',field: 'Name',width: 200},{ title: '图标',field: 'Icon',width: 150 },{ title: '排序',field: 'Seq',width: 80 },{ title: '功能ID',field: 'FunctionId',{ title: '菜单可见',field: 'Visible',{ title: 'Winform窗体类型',field: 'WinformType',width: 400 },{ title: 'Web界面URL地址',field: 'Url',width: 200 },{ title: 'Web界面的菜单图标',field: 'WebIcon',width: 120 },{ title: '系统编号',field: 'SystemType_ID',width: 80 } ]],toolbar: [{ id: 'btnAdd',text: '添加',iconCls: 'icon-add',handler: function () { ShowAddDialog();//实现添加记录页面 } },'-',{ id: 'btnEdit',text: '修改',iconCls: 'icon-edit',handler: function () { ShowEditOrViewDialog();//实现修改记录的方法 } },{ id: 'btnDelete',text: '删除',iconCls: 'icon-remove',handler: function () { Delete();//实现直接删除数据的方法 } },{ id: 'btnView',text: '查看',iconCls: 'icon-table',handler: function () { ShowEditOrViewDialog("view");//实现查看记录详细信息的方法 } },{ id: 'btnReload',text: '刷新',iconCls: 'icon-reload',handler: function () { //实现刷新栏目中的数据 $("#grid").datagrid("reload"); } }],onDblClickRow: function (rowIndex,rowData) { $('#grid').datagrid('uncheckAll'); $('#grid').datagrid('checkRow',rowIndex); ShowEditOrViewDialog(); } }) };

对于查询按钮触发的数据后台查询及数据绑定操作,javascript代码如下所示:

rush:js;"> //绑定查询按钮的的点击事件 function BindSearchEvent() { //按条件进行查询数据,首先我们得到数据的值 $("#btnSearch").click(function () { //得到用户输入的参数,取值有几种方式:$("#id").comboBox('getValue'),$("#id").dateBox('getValue'),$("#id").val() //字段增加WHC_前缀字符,避免传递如URL这样的Request关键字冲突 var queryData = { WHC_ID: $("#txtID").val(),WHC_Name: $("#txtName").val(),WHC_Icon: $("#txtIcon").val(),WHC_Seq: $("#txtSeq").val(),WHC_FunctionId: $("#txtFunctionId").val(),WHC_Visible: $("#txtVisible").val(),WHC_WinformType: $("#txtWinformType").val(),WHC_Url: $("#txtUrl").val(),WHC_WebIcon: $("#txtWebIcon").val(),WHC_SystemType_ID: $("#txtSystemType_ID").val() } //将值传递给 InitGrid(queryData); return false; }); }

通过构造一些查询参数并传递相应的值,后台根据这些参数,从对应控制器的分页方法 FindWithPager 获取相应的分页数据,并绑定到grid控件中。

另外,如果需要在grid里面增加一些图片或者链接什么的,应该如何操作呢?

如下界面所示的效果

首先需要在初始化代码里面增加列的formatter回调函数,如下所示。

rush:js;"> columns: [[ { field: 'ck',{ title: '菜单可见',width: 80,formatter: function (val,rowdata,index) { if (val) { return '' + val + ''; } else { return '' + val + ''; } } },

在formatter回调函数里面添加逻辑代码,判断是否可见,其实就是增加两个图片按钮,但是图片按钮的样式设置,必须在加载数据完毕后才能操作,因此需要在函数里面处理。

rush:js;"> onLoadSuccess: function () { $(".grid_visible").linkbutton({ text: '可见',plain: true,iconCls: 'icon-ok' }); $(".grid_unvisible").linkbutton({ text: '不可见',iconCls: 'icon-stop' }); },

如果显示图片不完整,设置行的自动调整高度属性为true即可。

autoRowHeight: true

10、树形控件

虽然easyui也有Tree控件,不过我较喜欢使用zTree这个树形控件,这个是一个免费的Jquery树控件。

引用代码如下所示:

rush:js;">

对于一般的删除操作,一般有一个提示确认的消息框,这个messager类也进行了封装处理,效果也不错。

界面代码如下所示。

rush:js;"> $.messager.confirm("删除确认","您确认删除选定的记录吗?",function (deleteAction) { if (deleteAction) { $.get("/DictData/DeletebyIds",postData,function (data) { if (data == "true") { $.messager.alert("提示","删除选定的记录成功"); $("#grid").datagrid("reload"); //当删除完成之后,第二次删除的时候还记得上次的信息,这样是不可以的,所以我们需要清除第一次的信息 rows.length = "";//第一种方法 $("#grid").datagrid("clearSelections");//第二种方法 } else { $.messager.alert("提示",data); } }); } });

以上就是我Web开发框架里面常用到的一些界面控件展示以及相关的代码介绍,有一些不太常用的控件可能还没有在本文中介绍,欢迎大家进行补充和讨论,以后有时间继续完善这个文章,作为基于MVC+EasyUI的框架界面的一个很好的参考。希望大家喜欢,多多提意见。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐