最近做一个小工具,列表显示页面准备使用jQuery的UI框架,因为之前知道有jQWidgets这个框架,所以直接就下载下来使用了,jQWidgets的功能很强大,Demo和文档也非常详细,但使用后发现有几个问题就果断放弃了使用jQWidgets:

  • 页面加载速度比较慢;
  • 当列表字段过多出现横向滚动条时,拖动滚动条非常卡(在IE下都很卡,Chrome好点);
  • 分页取数稍显麻烦,也可能是我没研究透。

经过一番比较选择了jQueryEasUI,目前最新版本为1.3.1:

其实是用类似的框架,看看官网的文档也就OK了,本文是我最近是用JQueryEasyUI的一个总结,也可以让初使用JQueryEasyUI的朋友少走弯路。

下载引用

下载后解压的文件目录如下图:

  • demo:JQueryEasyUI的一些示例页面,在项目使用可以将该目录删除;
  • locale:该目录中是一些本地化文件,用来支持不同的语言,如中文可以引用其中的easyui-lang-zh_CN.js;
  • plugins和src:这两个目录中是支持JQueryEasyUI各种功能的js文件;
  • themes:主题目录,目录中有三种主题,default、gray和metro,另外还有一个icons目录和icon.css,在页面使用引用icon.css即可。

使用jQueryEasyUI需要引用四个文件,两个css和两个js文件:

<link rel="stylesheet" type="text/css" href="../Scripts/jqueryeasyui/themes/gray/easyui.css" />
<link rel="stylesheet" type="text/css" href="../Scripts/jqueryeasyui/themes/icon.css" />
<script type="text/javascript" src="../Scripts/jqueryeasyui/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="../Scripts/jqueryeasyui/jquery.easyui.min.js"></script>

如果需要使用本地化 还需要引用:

<script type="text/javascript" src="../Scripts/jqueryeasyui/locale/easyui-lang-zh_CN.js"></script>

jQueryEasyUI Grid的分页

根据官网的文档可以很容易的构建Grid,期初我没有引用本地化文件easyui-lang-zh_CN.js,列表的分页栏显示出来是英文的,在网上查阅后得知可以用代码的方式重新构建分页栏:

//设置分页控件  var p = $('#dg').datagrid('getPager');
$(p).pagination({
pageSize: 10, //每页显示的记录条数,默认为10  pageList: [10, 20, 30, 40, 50], //可以设置每页记录条数的列表  beforePageText: '第', //页数文本框前显示的汉字
afterPageText: '页    共 {pages} 页',
displayMsg: '当前显示 {from} - {to} 条记录 共 {total} 条记录'
/*onBeforeRefresh:function(){              $(this).pagination('loading');              alert('before refresh');              $(this).pagination('loaded');          }*/
});

后来发现只需要引用本地化文件easyui-lang-zh_CN.js后分页栏就自动显示为中文了。引用本地化文件还可以解决日历控件格式的问题,所以如果是做中文系统建议还是在页面中引用本地化文件。

jQueryEasyUI控件的取值

使用JQuery取控件的值很简单,如下:

$("#CstName").val();
$("#TaskNo").val(),

如果要使用JQueryEasyUI的日历控件、下拉控件或其他的一些控件,给普通的input、select控件添加一个class即可:

<input id="FeedBackDate" name="FeedBackDate" class="easyui-datebox" maxlength="10"
style="width: 150px;" />
<select id="IsKfCl" class="easyui-combobox" name="IsKfCl" style="width:150px;">
<option value=""></option>
<option value="是">是</option>
<option value="否">否</option>
</select>
现在取这些控件的值需要使用下面的方法:
$("#FeedBackDate").datebox("getValue");
$("#IsKfCl").combobox("getValue");

Grid ToolBar的两种方式

通常在Grid列表控件的上方会添加一些按钮如:新增、编辑、删除等,如下面效果:

在JQueryEasyUI中可以使用ToolBar来实现,ToolBar可以在DataGrid初始化时定义,如下:

$('#dg').datagrid({
collapsible: false,
fitColumns: true,
singleSelect: true,
remoteSort: false,
sortName: 'RoleName',
sortOrder: 'desc',
nowrap: true,
method: 'get',
loadMsg: '正在加载数据...',
url: '...',
frozenColumns: [[
{ field: 'ck', checkbox: true }
]],
columns: [[
{ field: 'ID', title: 'ID', width: 80, sortable: true },
{ field: 'Name', title: '名称', width: 100,sortable:true }
]],
pagination: true,
pageNumber: 1,
rownumbers: true,
toolbar:
[
{
id: 'btnAdd',
text: '添加',
iconCls: 'icon-add',
handler: function() {
$("#name").val("");
add();
}
},
'-',
{
id: 'btnEdit',
text: '编辑',
iconCls: 'icon-edit',
handler: function() {
var selected = $('#dg').datagrid('getSelected');
if (selected) {
var name = selected.Name;
$("#Name").val(name);
edit();
}
}
},
'-',
{
id: 'btnDelete',
text: '删除',
disabled: true,
iconCls: 'icon-remove',
handler: function() {
}
}
]
});
});

还有一种方法就是将ToolBar单独定义在div中,然后在DataGrid的初始化时关联div的ID,首先定义ToolBar的div,ID为tb:

<!--工具栏-->
<div id="tb" style="padding: 5px; height: auto;display:none;">
<div style="margin-bottom: 5px">
<a href="#" class="easyui-linkbutton" iconcls="icon-add" onclick="add()">新增</a>
<a href="#" class="easyui-linkbutton" iconcls="icon-edit" onclick="edit()">编辑-</a>
<a href="#" class="easyui-linkbutton" iconcls="icon-edit" onclick="copyAdd()">拷贝′</a>
<a href="#" class="easyui-linkbutton" iconcls="icon-cut" onclick="copyVss()">复制地址·</a>
<a href="#" class="easyui-linkbutton" iconcls="icon-save" onclick="downReg()">下载REG</a>
<a href="#" class="easyui-linkbutton" iconcls="icon-remove" onclick="del()">删除y</a>
<!--查询区域-->
区域:<input id="seaArea" style="width: 100px" />
客户名称:<input id="seaCstName" style="width: 100px" />
<a href="#" class="easyui-linkbutton" iconcls="icon-search" onclick="searchSrcCode()">查询</a>
</div>
</div>

在DataGrid的初始化时设置toobar属性值为tb:

pagination: true,
pageNumber: 1,
rownumbers: true,
toolbar: '#tb',
...

单独定义ToolBar个人认为要灵活些,也会让JS代码简洁些。

Form表单的提交

上面说过了列表的显示,下面就来讲下数据的提交,有两种方式可以实现:

  • 自己组织数据然后用Ajax(GET POST)提交;
  • 使用Form表单提交的方式。

我在刚使用的时候是使用的第一种方法:

//保存
function saveFeedBackLog(mode,id) {
$.ajax({
type: "POST",
dataType: "json",
//cache:true,
url: "../Ajax/FeedBackLogAjax.ashx?Method=SaveFeedBackLog",
data: { FeedBackDate: $("#FeedBackDate").datebox("getValue"),
CstName: $("#CstName").val(),
TaskNo: $("#TaskNo").val(),
FeedBackContent: $("#FeedBackContent").val(),
CsZrr: $("#CsZrr").combobox("getValue"),
CsYzResult: $("#CsYzResult").val(),
IsKfCl: ,
KfZrr: $("#KfZrr").combobox("getValue"),
EndDate: $("#EndDate").datebox("getValue"),
KfClDate: $("#KfClDate").val(),
Wtyy: $("#Wtyy").val(),
Mode:mode,
ID:id
}, success: function (data) {
//..........

当页面字段比较多的时候会比较麻烦,保存时需要将每个字段的值逐一取出传送到后台,编辑时也需要将行中各字段的值逐一取出赋给表单中的控件,后来发现JQueryEasyUI提供Form的Ajax提交的方式,会使代码精简很多,而且使用Form表单提交的方式还能用到JQueryEasyUI提供的一些验证控件。

编辑时赋值给表单

function edit() {
var rowData = $('#dg').datagrid('getSelections');
if (rowData.length == 0) {
$.messager.alert('提示', '请选择要编辑的项!','info');
}
else if (rowData.length > 1) {
$.messager.alert('提示', '只能选择一项进行编辑!','info');
}
else {
_mode = "2";
var row = $('#dg').datagrid('getSelected');
openDialog();
$('#fm').form('load', row);
_srcCodeManageID = row.SrcCodeManageID;
url = "../Ajax/SrcCodeManageAjax.ashx?Method=SaveSrcCodeManage&ID=" + row.SrcCodeManageID+"&Mode="+_mode;
}
}

保存

//保存
function saveSrc() {
$('#fm').form('submit', {
url: url,
onSubmit: function () {
return $(this).form('validate');
},
success: function (data) {
if (data =="Success") {
$('#dlg').dialog('close'); // close the dialog
$('#dg').datagrid('reload'); // reload the user data
$.messager.alert('提示', '保存成功!', 'info');
}
else if (data=="Error")
{
$.messager.alert('错误', '系统出错!', 'error');
}
}
});
}

可以看出第二种方法相比第一种代码精简了很多,而且保存时还能用到表单的一些校验,比如设置必填项、电话、邮件格式等。

当然JQueryEasyUI还有很多其他的控件和功能,有待以后慢慢研究,希望本文对你有所帮助。

在Asp.Net中使用jQueryEasyUI(转)的更多相关文章

  1. 如何在Asp.Net中使用JQueryEasyUI

    JQueryEasyUI的基本信息: 官方下载 官方演示 官方文档 一.jQuery easyUI下载后解压的文件目录如下图: demo:JQueryEasyUI的一些示例页面,在项目使用可以将该目录 ...

  2. ASP.NET中常用的优化性能的方法

    1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...

  3. asp.net中ashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题

    最近有个项目加入了验证码功能,就从自己博客以前的代码中找到直接使用,直接访问验证码页面报错如下: 源代码:asp.net中使用一般处理程序生成验证码 Application Exception Sys ...

  4. ASP.NET中Session的sessionState 4种mode模式

    1. sessionState的4种mode模式 在ASP.NET中Session的sessionState的4中mode模式:Off.InProc.StateServer及SqlServer. 2. ...

  5. Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值

    Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值,去属性表中设置这时候会提示你去属性表中更改返回类型. 其实存储过程返回的也是一张表,只不过有时候存储过程有点复杂或者写法不规范的话不能 ...

  6. ASP.NET中后台数据和前台控件的绑定

    关于ASP.NET中后台数据库和前台的数据控件的绑定问题 最近一直在学习个知识点,自己创建了SQL Server数据库表,想在ASP.NET中连接数据库,并把数据库中的数据显示在前台,注意,这里的数据 ...

  7. asp.net中缓存的使用介绍一

    asp.net中缓存的使用介绍一 介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管理,有的提到的c ...

  8. ASP.NET中Ajax的用法

    在ASP.NET中应用Ajax的格式如下: 前台代码(用JQuery库) $.ajax({ type: "POST", async: true, url: "../Aja ...

  9. Asp.Net中使用OpenRowSet操作Excel表,导入Sql Server(实例)

    有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎). Jet 引擎大家都很熟悉,可 ...

随机推荐

  1. 数据包发包工具bittwist

    数据包发包工具bittwist   渗透测试中,通过发送特定格式的包,可以实施网络嗅探和攻击.Kali Linux提供一款发包工具bittwist.该工具可以通过指定的网络接口发送数据.该工具不仅可以 ...

  2. BZOJ.4909.[SDOI2017]龙与地下城(正态分布 中心极限定理 FFT Simpson积分)

    BZOJ 洛谷 https://www.luogu.org/blog/ShadowassIIXVIIIIV/solution-p3779# 正态分布 正态分布是随机变量\(X\)的一种概率分布形式.它 ...

  3. 清北学堂省选刷题冲刺班 Test Day3

    目录 2018.3.27 Test T1 T2 T3 考试代码 T2 T3 2018.3.27 Test 时间:8:00~11:30 期望得分:100+60+25=185 实际得分:100+40+25 ...

  4. CCCC 成都信息工程大学游记

    晚上刷智障25人本,刷到深夜四点,然后迷迷糊糊8点钟起床上车睡觉,然后就到了信息工程大学. 然后开始抢衣服,抢完衣服就开始拍照. 对了,这个学校看了下地图,好小呀,不过妹子好多呀. 然后就被老师带进机 ...

  5. js 弹窗广告24小时显示一次

    弹窗24小时显示一次 https://www.w3cschool.cn/javascript/js-cookies.html 我们需要借助cookie来实现这个功能 function setcooki ...

  6. Linux下查看哪些IP登陆过系统/var/log/wtmp

    last -f /var/log/wtmp

  7. stm32f103串口实现映射功能

    在实际开发中,常常遇到串口的默认输出IO口被其它模块占用了,所以我们要用到串口IO口映射功能.是指将原来实现功能的IO口映射到其它指定IO口,其它不变.详细操作例如以下: 先贴出默认下的串口初始化设置 ...

  8. kernel logo到开机动画之间闪现黑屏(android 5.X)

    在BootAnimation開始画图之前,会先做一次clear screen的动作,避免出现前面的图干扰到BootAnimation的显示. 通过check main_log先确认播放开机动画是哪个f ...

  9. Android SDK代理服务器解决国内不能更新下载问题

    原文地址:http://blog.csdn.net/boonya/article/details/38752647 读者须知:本篇文章中最靠谱的是第三种方式,最近有读者反映第三种方式也不行了,下面提供 ...

  10. cocos2d-x 清空缓存

    如场景切换  在内存吃紧的情况下 我们可以选择 先清理一下缓存 // 清空缓存 CCDirector::sharedDirector()->purgeCachedData();