可编辑单元支持一列展示多个属性域,可以为编辑单元提供验证,并且自定义验证事件。

 
代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SlickGrid example 3a: Advanced Editing</title>
<link rel="stylesheet" href="../css/slick.grid.css" type="text/css" />
<link rel="stylesheet"
href="../css/smoothness/jquery-ui-1.8.16.custom.css" type="text/css" />
<link rel="stylesheet" href="../css/examples.css" type="text/css" />
<style>
.cell-title {
font-weight: bold;
}
</style>
</head>
<body>
<div style="position: relative">
<div style="width: 600px;">
<div id="myGrid" style="width: 100%; height: 500px;"></div>
</div>
 
<div class="options-panel">
<h2>Demonstrates:</h2>
<ul>
<li>compound cell editors driving multiple fields from one cell</li>
<li>providing validation from the editor</li>
<li>hooking into validation events</li>
</ul>
</div>
</div>
 
<script src="../js/firebugx.js"></script>
<script src="../js/jquery-1.7.min.js"></script>
<script src="../js/jquery-ui-1.8.16.custom.min.js"></script>
<script src="../js/jquery.event.drag-2.0.min.js"></script>
<script src="../js/slick.core.js"></script>
<script src="../js/slick.editors.js"></script>
<script src="../js/slick.grid.js"></script>
 
<script type="text/javascript">
var grid;//定义表格
//定义表格数据变量
var data = [];
//设置列显示样式
var columns = [ {
id : "title",
name : "Title",
field : "title",
width : 120,
cssClass : "cell-title",
editor : Slick.Editors.Text
}, {//可管理多个属性域
id : "range",
name : "Range",
width : 120,
formatter : NumericRangeFormatter, //自定义显示风格格式化方法
editor : NumericRangeEditor //编辑方法
} ];
//设置表格参数
var options = {
editable : true,
enableAddRow : false,
enableCellNavigation : true,
asyncEditorLoading : false
};
//一列中显示多个属性域
function NumericRangeFormatter(row, cell, value, columnDef, dataContext) {
return dataContext.from + " - " + dataContext.to;
}
//编辑处理
function NumericRangeEditor(args) {
var $from, $to;
var scope = this;
 
this.init = function() {
$from = $("<INPUT type=text style='width:40px' />").appendTo(
args.container).bind("keydown", scope.handleKeyDown);
 
$(args.container).append("&nbsp; to &nbsp;");
 
$to = $("<INPUT type=text style='width:40px' />").appendTo(
args.container).bind("keydown", scope.handleKeyDown);
 
scope.focus();
};
 
this.handleKeyDown = function(e) {
if (e.keyCode == $.ui.keyCode.LEFT
|| e.keyCode == $.ui.keyCode.RIGHT
|| e.keyCode == $.ui.keyCode.TAB) {
e.stopImmediatePropagation();
}
};
 
this.destroy = function() {
$(args.container).empty();
};
 
this.focus = function() {
$from.focus();
};
 
this.serializeValue = function() {
return {
from : parseInt($from.val(), 10),
to : parseInt($to.val(), 10)
};
};
 
this.applyValue = function(item, state) {
item.from = state.from;
item.to = state.to;
};
 
this.loadValue = function(item) {
$from.val(item.from);
$to.val(item.to);
};
 
this.isValueChanged = function() {
return args.item.from != parseInt($from.val(), 10)
|| args.item.to != parseInt($from.val(), 10);
};
//可定义验证编辑单元数据
this.validate = function() {
if (isNaN(parseInt($from.val(), 10))
|| isNaN(parseInt($to.val(), 10))) {
return {
valid : false,
msg : "Please type in valid numbers."
};
}
 
if (parseInt($from.val(), 10) > parseInt($to.val(), 10)) {
return {
valid : false,
msg : "'from' cannot be greater than 'to'"
};
}
 
return {
valid : true,
msg : null
};
};
 
this.init();
}
 
$(function() {// 生成表格数据
for ( var i = 0; i < 100; i++) {
var d = (data[i] = {});
 
d["title"] = "Task " + i;
d["from"] = Math.round(Math.random() * 100);
d["to"] = d["from"] + Math.round(Math.random() * 100);
}
//渲染表格
grid = new Slick.Grid("#myGrid", data, columns, options);
 
grid.onValidationError.subscribe(function(e, args) {
alert(args.validationResults.msg);
});
})
</script>
</body>
</html>

SlickGrid example 3a: 可编辑单元的更多相关文章

  1. SlickGrid example 3: 可编辑单元

    <button onclick="grid.setOptions({autoEdit:true})"> 设置自动辅助编辑下一个元素.   代码: <!DOCTYP ...

  2. SlickGrid example 3b: 支持撤销操作的编辑单元

    不同类型的属性可以按不同的风格编辑. 每个编辑单元可以设置不同的验证方法. 历史编辑可以撤销.   代码: <!DOCTYPE html PUBLIC "-//W3C//DTD HTM ...

  3. FineUI大版本升级,外置ExtJS库、去AXD化、表格合计行、表格可编辑单元格的增删改、顶部菜单框架

    这是一篇很长的文章,在开始正文之前,请允许我代表目前排名前 20 中唯一的 .Net 开源软件 FineUI 拉下选票: 投票地址: https://code.csdn.net/2013OSSurve ...

  4. 获取wpf datagrid当前被编辑单元格的内容

    原文 获取wpf datagrid当前被编辑单元格的内容 确认修改单元个的值, 使用到datagrid的两个事件 开始编辑事件 BeginningEdit="dataGrid_Beginni ...

  5. 扩展jquery easyui datagrid编辑单元格

    扩展jquery easyui datagrid编辑单元格 1.随便聊聊 这段时间由于工作上的业务需求,对jquery easyui比较感兴趣,根据比较浅薄的js知识,对jquery easyui中的 ...

  6. listview 样式 LVS_REPORT 与 LVS_EDITLABELS 编辑单元格时,当前行第一列内容不显示

    今天想做一个可编辑单元格的 listview,样式是 LVS_REPORT 与 LVS_EDITLABELS 网上搜索了一些相关资料,照葫芦画瓢写了一个,可测试的时候发现,当从第2列开始编辑的时候,第 ...

  7. LVC函数重要参数 EDT_CLL_CB:退出可编辑单元格时回调

    6. I_GRID_SETTINGS 参数属性该参数用于设置Grid相关参数(打印.单元格回调):类型为:LVC_S_GLAY,该结构包括:01) COLL_TOP_P:最小化 TOP_OF_PAGE ...

  8. Swift - 可编辑表格样例(可直接编辑单元格中内容、移动删除单元格)

    (本文代码已升级至Swift3)   本文演示如何制作一个可以编辑单元格内容的表格(UITableView). 1,效果图 (1)默认状态下,表格不可编辑,当点击单元格的时候会弹出提示框显示选中的内容 ...

  9. EasyUI DataGrid编辑单元格时使用combogrid

    仅提供一段columns配置代码供参考: conditions对象是一个已赋值的数组对象集合.下拉框数据可直接使用conditions数据,也可以通过url获取. columns : [[ { fie ...

随机推荐

  1. 数据块损坏(block corruption)

    分为物理损坏和逻辑损坏-物理损坏一般指数据块头部不可以访问.数据块校验值不合法,数据块格式不再是oracle承认的格式-逻辑损坏一般是在物理性结构完整的情况下,数据的内容在含义上不正确,比如保存了不允 ...

  2. simple python code when @ simplnano

    code: import serial,time,itertools try: ser=serial.Serial(2,115200,timeout=0) except: print 'Open CO ...

  3. Python:安装mssql模块功能,并实现与sqlserver连接、查询

    由于我系统是x64系统,所以下载python2.7 x64.下载地址:https://www.python.org/downloads/release/python-2712/, 经过测试发现这个版本 ...

  4. for 穷举、迭代 while循环

    1.穷举: 把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况. 2.百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100 ...

  5. Java基础(47):插入排序的Java封装(含原理,可运行,哨兵位的理解见VisualGo上面的动态分析)

    直接插入排序(Straight Insertion Sorting)的基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使 ...

  6. hdu5314 Happy King

    树分治. 代码 #pragma comment(linker, "/STACK:102400000,102400000") #include<cstdio> #incl ...

  7. 查看Linux服务器各种信息方法

    有的时候需要搜集服务器的各种信息,比如cpu信息,内存信息,linux版本信息,安装的各种软件信息等等.下面总结几种主要指标的查看方法. 1. 查看Linux发行版信息 [root@pcmweb ~] ...

  8. 在TextView上加上下划线或中划线

    在做商城项目是需要用到原价格以及降价后的价格,不可避免用到下划线或中划线  textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下 ...

  9. paper 91:边缘检测近期最新进展的讨论

    VALSE QQ群对边缘检测近期最新进展的讨论,内容整理如下: 1)推荐一篇deep learning的文章,该文章大幅度提高了edge detection的精度,在bsds上,将edge detec ...

  10. paper 89:视频图像去模糊常用处理方法

    随着“平安城市”的广泛建设,各大城市已经建有大量的视频监控系统,虽然监控系统己经广泛地存在于银行.商场.车站和交通路口等公共场所,但是在公安工作中,由于设备或者其他条件的限制,案情发生后的图像回放都存 ...