easy ui 零散技巧
0、datagrid无数据样式提示
思路一:css伪类选择器,找到无数据的table通过:empty 样式实现无数据提示(配合::before伪对象实现),想法是美好的,现实是无奈的,如图

easyui datagrid即使无数据时,依然存在一行(行无数据且不可见),:empty方案被放弃。
思路二:区分出空数据的行和只有一条数据的行,对比发现class是否为空(包括treegrid),css代码如下:
.datagrid-view2 .datagrid-btable tbody > tr[class='']::before {
position: absolute;
content: 'No Data';
display: flex;
width: 100%;
height: calc(100% - 45px);
padding-left: calc(50%);
align-items: center;
}
效果如下:

汉化:在easyui-lang-zh_CN.js最末加上如下代码即可:

0.1、datagrid无loading式更新数据
// update 方式更新table
function updateTable(tb,p) {
var mrTb = tb;
if (mrTb && mrTb.length) {
var opts = mrTb.datagrid('options'),
params = {
page: opts.pageNumber,
rows: opts.pageSize,
order: opts.sortOrder,
sort: opts.sortName
},
idField = opts.idField;
if (opts.onBeforeLoad) opts.onBeforeLoad(params);
// 合并所以查询条件
if(p) {
$.extend(params, p);
}else {
$.extend(params, opts.queryParams);
}
// 抓取数据更新table
$.post(opts.url, params, function(data) {
if (data && data.rows) {
var rows = mrTb.datagrid('getRows'),
srows = mrTb.datagrid('getSelections').map(function(item) {
return item
});
var rowLength = rows.length; /* start */
var newLength = data.rows.length;
if(rowLength <= newLength) {
for(var i=0;i<newLength;i++) {
if(i<=rowLength) {
mrTb.datagrid('updateRow', {index: i, row: data.rows[i]});
}else {
mrTb.datagrid('appendRow', data.rows[i]);
}
}
}else {
for(var i=0;i<rowLength;i++) {
if(i<=newLength) {
mrTb.datagrid('updateRow', {index: i, row: data.rows[i]});
}else {
mrTb.datagrid('deleteRow', i);
}
}
}
/* end */ srows.map(function(row) {
mrTb.datagrid('selectRecord', row[idField]);
});
mrTb.datagrid('resize');
}
}, 'json');
}
}
1、Jquery带上下文查找:
格式:$(selector,context)
例如:$("input",window.document),查找当前文档下的说有input元素,也等价于$("input",null)或者$("input");
$("input",$("div.target")),查找class为“target”的div里的所有input元素;
2、隐藏tab:
$(fucntion(){
var ctab = $('#tabs').tabs('getTab', 'title1').panel('options').tab;
ctab.hide();
});
3、模态dialog,页面有滚动条时,弹出dialog后,隐藏的区域闪烁问题处理:
.window-mask{
height: 100%;
position: fixed;
}
即覆盖原遮蔽层样式的‘position’属性就行(原属性 - position:absolute)
4、分页信息NaN处理
如图:
代码:data-options="singleSelect:true,
nowrap:true,
rownumbers:true,
pagination:true,
pageSize: 5,
pageList:[5]">
当中的pageSize,pageList等记得给个默认值哦,当然像ie这个不友好的浏览器,还是加上默认值比较好。
5、Jquery判断元素显示隐藏:display属性状态值
很多时候,我们都要判断元素当前是否处于显示或隐藏状态。Jquery通过判断元素display属性状态值来实现“判断当前操作元素是否显示还是隐藏”,实现方法主要使用Jquery提供的基本选择器 :visible 或 :hidden方法。
<script type="text/javascript">
function checkStatus(){
if($('.test').is(':visible')){
alert("注意:'.test'被隐藏了!");
}else{
alert("'.test'显示,能看见');
}
//用基本选择器 :hidden 也行
// if($('.test').is(':hidden')){
// alert("'.test'显示,能看见');
// }else{
// alert("注意:'.test'被隐藏了!");
// }
}
</script>
6、datagrid 自动换行:
<table class="easyui-datagrid"
data-options="url:'datagrid_data2.json',
fitColumns:true,
nowrap:false,
autoRowHeight:true">
记住是三个属性同时具备哦,因为啥?(如若不加这三个,范二的IE会让你痛不欲生)还是兼容性问题啦O(∩_∩)O
7、confirm确认框去掉【关闭】等按钮
$.messager.confirm({
title:'提示',
msg:'提示的内容...',
closable:false, // 关闭按钮
collapsible:false, // 收缩按钮
minimizable:false,
maximizable:false,
fn:function(r){
}
});
8、datagrid 加载数据后、渲染前变更数据
loader:如何从远程服务器加载数据
<table class="easyui-datagrid"
data-options="url:'datagrid_data1.json',success:process,
loader:function(param,success,error){
var that = $(this);
var opts = that.datagrid('options');
if (!opts.url) { return false; }
$.ajax({
type : 'POST',
url : opts.url,
data : param,
dataType : 'json',
success : function(data){//process 是自定义的数据处理方法
if(opts.success) try{ opts.success(data); }catch(e){}
success(data);
},
error : error
});
}">
... ...
<script type="text/javascript">
function process(data){
if(data && data.rows){
$.each(data.rows,function(index,item){
item.xxx = '***';//修改相关属性
... ...
});
}
}
</script>
9、给时间框控件扩展一个清除的按钮
/**
* 给时间框控件扩展一个清除的按钮
*/
$.fn.datebox.defaults.cleanText = '清空'; (function ($) {
var buttons = $.extend([], $.fn.datebox.defaults.buttons);
buttons.splice(1, 0, {
text: function (target) {
return $(target).datebox("options").cleanText
},
handler: function (target) {
$(target).datebox("setValue", "");
$(target).datebox("hidePanel");
}
});
$.extend($.fn.datebox.defaults, {
buttons: buttons
}); })(jQuery)
10、datagrid 分页自动选中
在easyui datagrid设置
idField:"主键字段名" ,你会发现选中状态就会保持得住,不用做任何编码。
11、datagrid fitColumns:true 时,表格小于指定宽度取消自适应
onResize: function(width,height){
var cNames = $("#tb").datagrid('getColumnFields');/* 所有的头列名 */
$.each(cNames,function(index,item){
/* 设置列属性fixed:true,则fitColumns:true失效 */
var cOptions = $("#tb").datagrid('getColumnOption',item);
if(width - 600 < 0) cOptions.fixed = true;
else cOptions.fixed = false;
});
$("#tb").datagrid('fitColumns');
}
另一种场景:
onLoadSuccess:function(data){
//console.log($(this).datagrid(''));
var cNames = $("#tb").datagrid('getColumnFields');
$.each(cNames,function(index,item){
var cOptions = $("#tb").datagrid('getColumnOption',item);
if(cNames.length<8){// 自适应
cOptions.auto = false;
cOptions.width = 10;
delete cOptions.fixed;
}else{
cOptions.auto = true;
cOptions.fixed = true;
delete cOptions.width;
}
});
$("#tb").datagrid('fitColumns');
}
12、datagrid getChecked,选择了多行结果只返回一条数据
a: idField属性设置不对,如设置成了一个不存在的属性
13、datagrid pagination,按钮控制定义
分页控件布局定义。(该属性值自1.3.5版开始可用)
布局选项可以包含一个或多个值:
1)
list:页面显示条数列表。
2) sep:页面按钮分割线。
3) first:首页按钮。
4) prev:上一页按钮。
5)
next:下一页按钮。
6) last:尾页按钮。
7) refresh:刷新按钮。
8) manual:手工输入当前页的输入框。
9)
links:页面数链接。
示例代码:
$('#pp').pagination({
layout:['first','links','last']
});
14、tree,叶子节点显示为目录问题
data: [{
"id":"0",
"text":"功能权限",
"children":[
{"id":"1","text":"首页","children":[],"state":"open"},
{"id":"1","text":"导航","children":[],"state":"close"}
]
}]
叶子节点带state属性时,会导致叶子节点显示为目录
15、表格前端排序
function sortTable(tb){
var opts = tb.datagrid('options'),
sortName = opts.sortName,
sortOrder = opts.sortOrder,
rows = tb.datagrid('getRows'),
fns = {
desc: desc,
asc: asc
},
fmts = {};
opts.columns[0].map(function(column){
fmts[column.field] = column.formatter;
});
if(sortName){
var sortRows = rows.map(function(row,index){
var jrow = $.extend({},row);
if(fmts[sortName]) {
jrow['_'+sortName+'_'] = $('<div>'+fmts[sortName](jrow[sortName],jrow,index)+'</div>').text();
}else{
jrow['_'+sortName+'_'] = row[sortName];
}
return jrow;
});
sortRows = sortRows.sort(fns[sortOrder]);
sortRows.map(function(row,idx){
tb.datagrid('updateRow',{index: idx,row: row});
});
}
function desc(a,b){
var val1 = a['_'+sortName+'_']||'',val2 = b['_'+sortName+'_']||'';
if(val1.toString().toLowerCase() > val2.toString().toLowerCase()){
return -1;
}else{
return 1; //按编码从大到小排列
}
}
function asc(a,b){
var val1 = a['_'+sortName+'_']||'',val2 = b['_'+sortName+'_']||'';
if(val1.toString().toLowerCase() < val2.toString().toLowerCase()){
return -1;
}else{
return 1; //按编码从小到大排列
}
}
}
easy ui 零散技巧的更多相关文章
- Struts2 easy UI插件
一.easy UI是类似于jQuery UI的插件库,它提供了丰富的各种常用插件:tree.datagrid... tree插件: 语法:$(selector).tree([settings]); 常 ...
- Easy UI常用插件使用
一.easy UI是类似于jQuery UI的插件库,它提供了丰富的各种常用插件:tree.datagrid... tree插件: 语法:$(selector).tree([settings]); 常 ...
- easy ui插件
简介: easy UI是类似于jQuery UI的插件库 注意:多脚本同时使用时,注意脚本冲突问题. 常用插件: 1.tree插件(tree插件实现动态树形菜单) 2.datagrid插件(datag ...
- easy ui 框架
Easy UI 准备工作(搭建) 1.在WebRoot 的目录下创建js 文件夹,在文件夹中倒入一下两个包 Jquery.easyui.min.js jquery.min.js 2.在WebRoot ...
- 解决easy ui 1.4datebox控件不能清空的问题
用easy ui遇到这个问题,在网上找到了解决方案,不过是1.3.6版本的.现提供1.4版本的修改的具体位置和代码. 我们用的是这个 修改位置:12739行,添加代码: , { text: funct ...
- easy ui 1.4的NumberBox,失去焦点后不能再次输入小数点
这也是1.4版本的bug,现在1.4.1也发布了,经验证,该问题在新版本中已经解决了 在网上找到的解决办法,地址:http://www.jeasyui.com/forum/index.php?topi ...
- ASP.MVC EASY UI 入门之 —— Tree & ComboTree
1.常规的EASY UI的tree和comboTree代码基本是官方的DEMO都有的,虽然很简单,但是还是要实践的做一次,才能更清晰的了解和使用它!先上效果图 因为用的是code first,所以数据 ...
- 关于ExtJS、JQuery UI和easy UI的选择问题
转自百度知道. 问:做企业级应用,比如***管理系统,不需要华丽的特效,只希望简单,风格统一.能用到的只有messagebox.tree.grid大概这几个,其他特效不要,忘大神根据自己的见解以及我这 ...
- Jquery easy UI 上中下三栏布局 分类: ASP.NET 2015-02-06 09:19 368人阅读 评论(0) 收藏
效果图: 源代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...
随机推荐
- socket关联查询
反向代理服务器面对用户请求和后端服务器响应,需要将两者联系起来,于是就涉及到socket关联查询了. 代理服务器处理用户的请求和后端服务器的响应,并且这两方的请求和响应是相互对应的,因此对于代理接收到 ...
- Excel实用技巧
情景:有时候,我们写了一个公式,然后想在其他行也套用这个公式,一般人都是把鼠标放在那个公式所在的单元格的右下角,然后往下拉,数据量少的时候还好,数据量大的时候就不太好操作了,此时,我们需要一个好方法. ...
- 博客CSS
<p style="background: #CFE0F8; padding: 5px;">理解Code First及其约定和配置</p> <p id ...
- [原创]纯JS实现网页中多选复选框checkbox和单选radio的美化效果
图片素材: 最终效果图: <html><title> 纯JS实现网页中多选复选框checkbox和单选radio的美化效果</title><head>& ...
- SQL Server 的表数据简单操作(表数据查询)
--表数据查询----数据的基本查询-- --数据简单的查询--select * | 字段名[,字段名2, ...] from 数据表名 [where 条件表达式] 例: use 商品管理数据库 go ...
- sys模块和os模块,利用sys模块生成进度条
sys模块import sysprint(sys.argv)#sys.exit(0) #退出程序,正常退出exit(0)print(sys.version) #获取 ...
- CSS实现DIV超长截断,并显示...
DIV显示内容有时会超长,并把页面撑的很难看, 以前的做法是在JS中,或者后台判断其长度,过长就截断, 但由于中英文数字展示的宽度并不一样,截断的长度也就只能取最小值, 展示的效果也不好.利用CSS提 ...
- DIOCP之编写第一个应用程序(一)
Server 设计功能如下: 1.支持客户端登录 2.连接数据库进行操作 3.推送信息 4.限制文件上传大小 第一步:创建一个VCL-Forms Application(创建一个标准VCL程序) 第二 ...
- Scala映射
#映射: 包含一组键值对应元素的集合 val Z=Map(a1->b1,...) //a1如果是字符,需要用双引号括起来 val Z=Map((a1,b1),...) ##可变映射, 内容可更 ...
- Angularjs学习笔记(一)
大部分传统的模板系统,对模板的渲染是个线性单向的过程:模板或变量与模板混合在一起产生结果的标记集合.任何对模型的改变都需要通过模板的重新计算.但AngularJS有所不同,任何用户引发的视图的改变,都 ...