KendoUI之Grid的问题详解
KendoUI之Grid的问题详解
- KendoUI之Grid的问题详解
- 1.kendoLov带出的值出现 null和undefined
- 2.Grid不可编辑时,设置行背景颜色
- 3.设置Grid某列的Title样式和列内数据样式
- 4.修改某个字段之后 点击保存按钮没有任何效果
- 5.检查Grid行中是否还有数据没有保存
- 6.检查Grid选中的数据是否有脏数据
- 7.Grid保存之后自动刷新数据,加载数据源
- 8.Input 回车之后可以查询
- 9.锁住grid的前两列
- 10.设置grid列可以拖动
- 纠错:
- 11.Tooltip 移动到列上会显示所有数据内容
- 1)比较丑的一种方法
- 2)相对好看点的方法
- 12.LOV不可编辑(比较原始的方式)
- 13.控制Input、LOV、日期框、数字框、多选框、Grid不可编辑且变灰
- 14.grid—toolbar—-save按钮,加上这个样式就会自动执行grid中的saveFn方法。
- 15.Grid列开始日期、结束日期限制大小
- 16.通过onclick传递参数
- 17.点击按钮弹出模态框
- 1)设置div用于显示模态框
- 2)设置模态框的样式
- 3)模态框指定到某个特定的html页面
- 18.Lov带出的字段不可编辑
- 19.Grid保存之后设置某列不可编辑
- 20.先加载grid,再设置按钮状态
- 21.Grid列拖拽、列选择、显示行号
- 22.设置grid行填充颜色为红色
- 23.设置grid行字体颜色为红色
- 24.禁用button并移除onclick事件
- 25.Grid的toolbar上按钮隐藏
1.kendoLov带出的值出现 null和undefined
如果数据库中数据为空,查询出来,界面上会显示null
点击新建按钮可能会出现undefined
这是因为template的问题,这样写会出错。
“ !=null ”的时候 将“ || ” 换成“ && ”
或者“ ==null ”的时候 改成“ || ”
然后就没问题了。
具体代码如下:
{field: "opeSco",title: "<@spring.message '所属经营范围'/>",width: 150,attributes: {style: "text-align:center"},headerAttributes: {"class": "table-header-cell",style: "text-align: center"},template:function(item){if(item.meaning==null || item.meaning==""){return "";}return item.meaning;},editor: function (container, options) {$('<input name="' + options.field + '"/>').appendTo(container).kendoLov({code: "CUS__MANSCOPE_CATEGORYCODE",contextPath: '${base.contextPath}',locale: '${base.locale}',textField: 'meaning',select: function (e) {options.model.set('opeSco',e.item.value);options.model.set('meaning',e.item.meaning);},query:function(e){if (options.model.medType != null) {e.param['propertyCode'] = options.model.medType;}},clearButton:true});}
},```
2.Grid不可编辑时,设置行背景颜色
tr[data-uid=dataItem.uid] 可以定位Grid的某一行。
//控制背景颜色
{hidden: true,template: function (dataItem) {var uid = dataItem.uid;if (dataItem.statusCode == "SUBMITTED") {setTimeout(function () {$("tr[data-uid=" + uid + "]").css("background", "#EBEBEB");}, 0);}}
},
3.设置Grid某列的Title样式和列内数据样式
//列标题居中
headerAttributes: {"class": "table-header-cell",style: "text-align: center;"
},//列数据居左
attributes: {style: "text-align:left;"}, //列数据过长时,不换行,简略为 " ... "
attributes: {style: "white-space:nowrap;text-overflow:ellipsis;"},
4.修改某个字段之后 点击保存按钮没有任何效果
原因: __status = ’ ‘
HAP框架判断界面是新增还是修改或者是删除,都是通过“ __status ”。如果没有值,controller是不会操作数据的。
新建: __status = ‘add ‘
更新: __status = ‘update ‘
删除: __status = ‘delete ‘
如果“ __status ”实在是没有值,可以手动设置值。 viewModel.model.set(’ __status’, ‘add’);
5.检查Grid行中是否还有数据没有保存
使用dataSource.hasChanges() 方法。
if(!dataSource1.hasChanges()){kendo.ui.showInfoDialog({message: '还有未保存的数据,请先保存!'});
}else{window.top.closeTab("GMI_EDIT"+basicId);
}
6.检查Grid选中的数据是否有脏数据
删除数据时,需要判断选中的数据是否是脏数据(即未保存的数据)
$(“#Grid”).data(“kendoGrid”).selectedDataItems()[i].dirty
//删除数据
function deleteData() {var grid = $("#Grid").data("kendoGrid");var checked = grid.selectedDataItems(); //获得选中的数据行if (checked.length == 0) {kendo.ui.showInfoDialog({message: "请至少选择一行"})} else {var dirtyArr = [];var statusCodeArr = [];for (var i = 0; i < checked.length; i++) {dirtyArr.push(checked[i].dirty || checked[i].organizationId == "");statusCodeArr.push(checked[i].statusCode);}if (dirtyArr.indexOf(true) != -1) {//存在未保存的数据kendo.ui.showInfoDialog({message: '请先保存该数据'});} else if (statusCodeArr.indexOf("ALTER") != -1 || statusCodeArr.indexOf("REJECTED") != -1 || statusCodeArr.indexOf("APPROVED") != -1 || statusCodeArr.indexOf("SUBMITTED") != -1 || statusCodeArr.indexOf("REVOKED") != -1) {//存在非新建状态的数据kendo.ui.showInfoDialog({message: '非新建状态不能删除'});} else {Hap.deleteGridSelection({grid: $('#Grid')});}}}
7.Grid保存之后自动刷新数据,加载数据源
$(‘#grid1’).data(‘kendoGrid’).dataSource.page(1);
或者
$(‘#grid’).data(‘kendoGrid’).dataSource.read();
saveFunction:function () {$('#grid1').data('kendoGrid').saveChanges().done(function(e){if(e.response.success){viewModel.set("model.statusCode","ALTER");$("#submit-btn").removeAttr("disabled").on("click",function () {viewModel.submitData();});$('#grid1').data('kendoGrid').dataSource.page(1); //刷新数据}});
},
8.Input 回车之后可以查询
/* 回车键绑定查询按钮 */
$('#query-form input').keydown(function (e) {if (e.keyCode == 13) {e.target.blur();viewModel.queryResource(e);}
});
9.锁住grid的前两列
locked:true
{
field:'ruleCode',
title: '<@spring.message "gxpvalidrule.rulecode"/>',
width:'100px',
locked:true //锁住前两列},
10.设置grid列可以拖动
reorderable:true,
纠错:
resizable: true,
scrollable: true,
11.Tooltip 移动到列上会显示所有数据内容
当行数据过长,超出的数据变为“ … ” 。鼠标移动到单元格上,会把行中的所有数据呈现出来。
有以下两种方式:
1)比较丑的一种方法
$("#Grid").kendoTooltip({show: function(e){if(this.content.text().length > 20){this.content.parent().css("visibility", "visible");}},hide:function(e){this.content.parent().css("visibility", "hidden");},filter: "td:nth-child(10)", //this filter selects the first column cellsposition: "center",content: function(e){var dataItem = $("#Grid").data("kendoGrid").dataItem(e.target.closest("tr"));var content = dataItem.errorMsg;return content;}}).data("kendoTooltip");
2)相对好看点的方法
a. 首先设置样式
<!--设置tooltip的样式-->
<style>div[role=tooltip].k-tooltip{padding:2px;background:#5c9acf;}.k-tooltip-content{padding:4px;text-align:left;background:#fff;color:#666;}.k-callout {border-bottom-color:#5c9acf;}
</style>
b.设置数据显示的样式
//数据太长不换行,移动到上边的时候显示框
attributes:{style: "white-space:nowrap;text-overflow:ellipsis;"},
c.添加Tooltip
//add tooltip
$("#Grid").kendoTooltip({show: function(e){if($.trim(this.content.text()) !=""){$('[role="tooltip"]').css("visibility", "visible");}},hide: function(){$('[role="tooltip"]').css("visibility", "hidden");},filter: "td:nth-child(n+3)",content: function(e){var element = e.target[0];if(element.offsetWidth < element.scrollWidth){var text = $(e.target).text();return '<div style="min-width:100px;max-width: 1000px;">' + text + '</div>';}else{$('[role="tooltip"]').css("visibility", "hidden");//解决鼠标一开始放在上面出现空模块return "";}}
}).data("kendoTooltip");
备注:使用Tooltip会出现一个问题,如果行上出现复选框,复选框很难选中。
解决方法:把复选框放到最左或者最右
最左,修改n+3中的“ 3 ” ,以达到想要的效果
最右,过滤掉最后一列:filter: “td:nth-child(n+3) :not-last-child”,
12.LOV不可编辑(比较原始的方式)
13.控制Input、LOV、日期框、数字框、多选框、Grid不可编辑且变灰
$("#templateName").attr("readonly",true).css("background", "#EEEEEE");
$('#end-date').attr('disabled',true).data('kendoDatePicker').enable(false);
$('#qualifyType').attr('disabled',true).data('kendoLov').enable(false);
$('#warningLeadTime').attr('disabled',true).data('kendoNumericTextBox').enable(false);
$("#enableFlag").data("kendoCheckbox").enable(false);
//设置grid不可编辑
$("#Grid").data("kendoGrid").setOptions({editable: false});
//设置grid自适应界面显示,否则grid中只能看到一条数据
$("#Grid").data("kendoGrid").autoResize();
14.grid—toolbar—-save按钮,加上这个样式就会自动执行grid中的saveFn方法。
15.Grid列开始日期、结束日期限制大小
{field: "startDate",title: '开始时间',headerAttributes: {"class": "table-header-cell",style: "text-align: center"},attributes:{style: "white-space:nowrap;text-overflow:ellipsis;"},width: 120,format: "{0:yyyy-MM-dd}",editor: function(container, options) {var end = options.model.endDate;var d;if(end){d=end;}$('<input name="' + options.field + '"/>').appendTo(container).kendoDatePicker({format:"yyyy-MM-dd",max:d,change:function(){if(this.value()!=null){d = this.value();}else{d= new Date(1900, 0, 1, 22, 0, 0);}}});}},{field: "endDate",title: '结束时间',headerAttributes: {"class": "table-header-cell",style: "text-align: center"},attributes:{style: "white-space:nowrap;text-overflow:ellipsis;"},width: 120,format: "{0:yyyy-MM-dd}",editor: function(container, options) {var start = options.model.startDate;var d;if(start){d=start;}$('<input name="' + options.field + '"/>').appendTo(container).kendoDatePicker({format:"yyyy-MM-dd",min:d,change:function(){if(this.value()!=null){d = this.value();}else{d= new Date(2099, 0, 1, 22, 0, 0);}}});}},
16.通过onclick传递参数
传递非字符串时:”+item.basicId+”
传递字符串参数时: \”“+item.candidateRuleCode+”\” 用双引号将参数包围,同时使用转义符。
//传递int int string
return "<button class='btn btn-primary' onclick='detail("+item.basicId+","+item.lineId+",\""+item.candidateRuleCode+"\")'>分配明细</button>"
17.点击按钮弹出模态框
1)设置div用于显示模态框
<div id="win1"></div>
2)设置模态框的样式
$("#win1").kendoWindow({width: "600px",height:"400px",title: '<@spring.message "指定人"/>',modal:true,resizable: true,visible:false,iframe:true
});
3)模态框指定到某个特定的html页面
var userWin = $("#win1").data("kendoWindow");
userWin.refresh('wfl_config_user.html?basicId='+basicId+'&lineId='+lineId);
if(parent.autoResizeIframe){parent.autoResizeIframe('${RequestParameters.functionCode!}', 500, function(){userWin.center().open();})
}else {userWin.center().open();
}
18.Lov带出的字段不可编辑
container.removeClass(‘k-edit-cell’); 删除单元格的编辑类
{
field: "wflName",
title: '工作流名称',
width: 180,
editor: function(container, options){container.html(options.model.wflName);container.removeClass('k-edit-cell');
}
19.Grid保存之后设置某列不可编辑
editable:function(col,item){if(col=="ruleCode"){if(this.basicId != "" && this.basicId != null){ //避免新建的时候也不可编辑return false;}}return true;
}
20.先加载grid,再设置按钮状态
21.Grid列拖拽、列选择、显示行号
reorderable:true, //用于列拖拽columnMenu: true, //用于列选择rownumber:true, //用于显示行号
22.设置grid行填充颜色为红色
//css样式类<style>.grid-red{background:#FF0000;}</style>dataBound: function (e) {//设置字体颜色$.each(dataSource.data(), function (i, v) {if(v.billAmount < 0) {$('tbody > tr[data-uid="' + v.uid + '"] > td').attr("class", "grid-red");}})},
23.设置grid行字体颜色为红色
dataBound: function (e) {//设置字体颜色$.each(dataSource.data(), function (i, v) {if(v.billAmount < 0) {$('tbody > tr[data-uid="' + v.uid + '"] > td').css("color","red");}})},
24.禁用button并移除onclick事件
//当查询字段“核对状态”限制为已核对时,将“自动核对”按钮置灰,不可点击function disableAutoSettlementBtn(a){if($("#flowStatus").val() == 'CHECKED'){$("#btn_auto_settlement").attr("disabled", "disabled").unbind();$("#btn_auto_settlement").removeAttr("onclick");}else{$("#btn_auto_settlement").removeAttr("disabled").on("click", function () {autoSettlement();});}}
25.Grid的toolbar上按钮隐藏
当编辑或者新建grid时,toolbar上按钮显示并且可以点击
toolbar: [{template :'<span id="btn_add" class="span-btn-size span-span" data-bind="click:createFunction"><img alt="" src="${base.contextPath}/resources/image/new.png" /><a ><@spring.message "hap.new"/></a></span>' +'<span id="btn_delete" class="span-btn-size span-span" onclick="deleteData()"><img alt="" src="${base.contextPath}/resources/image/delete.png" /><a ><@spring.message "hap.delete"/></a></span>',}],
隐藏按钮:
$("#Grid").data("kendoGrid").setOptions({toolbar: null
});
KendoUI之Grid的问题详解相关推荐
- grid栅格布局详解
grid栅格布局 一.概述 二.grid布局的基本内容 1.术语 2.定义 3.grid-template-columns 属性,grid-template-rows 属性 4.cloumn-gap, ...
- WPF 控件专题 Grid 控件详解
1.Grid 介绍 定义由列和行组成的灵活的网格区域,Grid顾名思义就是"网格",它的子控件被放在一个一个实现定义好的小格子里面,整齐配列,该对象可包含多个 Children对象 ...
- CSS Grid网格布局详解
Grid 布局又称网格布局,是W3C提出的一个二维布局系统,它与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置.但是,它们也存在重大区别.Flex 布局是轴线布局,只能指定" ...
- column属性 extjs_Ext.grid.ColumnModel 属性 详解
Ext.grid.ColumnModel 用于定义 Grid 的列 用例 var colModel = new Ext.grid.ColumnModel([ {header: "Ticker ...
- CSS Grid 网格布局详解
目录 一:Grid简介 二:基本概念 2.1 容器和项目 2.2 行和列 2.3 单元格 2.4 网格线 三:容器属性 3.1 display 属性 3.2.grid-template-columns ...
- python grid函数_详解numpy中的meshgrid函数用法
numpy中的meshgrid函数的使用 numpy官方文档meshgrid函数帮助文档https://docs.scipy.org/doc/numpy/reference/generated/num ...
- Python Tkinter模块详解(后续持续补充)
声明:该文章是个人学习中写的,目的是总结及当作工具参考,有一定的借鉴成分,后续若有新发现则补充 目录 Tkinter简介 创建组件基本语法 Tkinter组件汇总 Variable 类 常见参数详解 ...
- python布局管理_Python基础=== Tkinter Grid布局管理器详解
本文转自:https://www.cnblogs.com/ruo-li-suo-yi/p/7425307.html @ 箬笠蓑衣 Grid(网格)布局管理器会将控件放置到一个二维的表 ...
- grid layout网格布局详解
grid layout网格布局详解 什么是grid layout grid的特点 grid css属性的基础知识 创建一个grid布局 创建一个网格 隐性网格与显性网格 尺寸单位fr repeat函数 ...
最新文章
- Realm 使用的简单教程
- C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)
- 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 二 NSMutableString
- wegame一键蹲替换文件_iPhone 提示音一键替换,极简教程
- 【Alljoyn】Alljoyn学习笔记五 AllJoyn开源技术基础概念解析
- RequestBody注解
- linux启动mysql_Linux服务器安装Mysql教程
- c++面向对象高级编程 学习十一 类模板、函数模板、成员模板
- EMC标准与测试方法
- OpenCore引导配置说明0.6.9版-基于OpenCore-0.6.9-05-04正式版
- 系统的x86与x64是什么意思以及他们的区别?
- JSR303 数据效验
- Hive中如何统计用户三个月或者以上的行为数据
- 引起内存不能“read”的原因及“written”的解决方案
- seata(二) 分布式事务框架seata1.3 AT及XA模式实例演示
- 大数据行业就业指南:三大方向 十大职位
- Python--初识庐山真面目
- 魔兽世界8.0哪个服务器稳定,魔兽世界8.0国服开服了!为了不落后!这九件事急需了解掌握...
- CSS去掉链接下划线的方法
- 电磁场与仿真软件(13)