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

 
代码:
<!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. .NET Framework 4 中的并行编程9---线程安全集合类

    原文转载自:http://www.cnblogs.com/xray2005/archive/2011/10/11/2206745.html 在.Net 4中,新增System.Collections. ...

  2. C# 6.0的新变化

    自动属性初始化 (Initializers for auto-properties) 以前我们是这么写的 为一个默认值加一个后台字段是不是很不爽,现在我们可以这样写 只读属性的初始化(Getter-o ...

  3. 【转】Java多线程编程中易混淆的3个关键字( volatile、ThreadLocal、synchronized)总结

    概述 最近在看<ThinKing In Java>,看到多线程章节时觉得有一些概念比较容易混淆有必要总结一下,虽然都不是新的东西,不过还是蛮重要,很基本的,在开发或阅读源码中经常会遇到,在 ...

  4. sqlserver中索引优化

    背景: MRO表中TimeStamp nvarchar(32),但实际上它存储的内容是日期(2015-09-09 11:20:30). 现在我要执行这样一个sql语句: Select t10.* fr ...

  5. respondsToSelector: selector

    -(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递)

  6. UISearchController的使用

    - (void)addSearchController { _searchController = [[UISearchController alloc] initWithSearchResultsC ...

  7. sqlserver 存储过程 以及统计整个数据库数据

    drop proc test 删除存储过程 go  用于在 SSMS 和 SQLCMD 中将其之前的 T-SQL 语句作为一个批处理提交给 SQL Server 实例.GO 不是 T-SQL 语句,只 ...

  8. Kafka集群模式部署

    环境:kafka 0.8.1.1 基本概念 Kafka维护按类区分的消息,称为主题(topic) 生产者(producer)向kafka的主题发布消息 消费者(consumer)向主题注册,并且接收发 ...

  9. 三层与MVC

    三层架构(3-tier architecture) 我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一 ...

  10. location.reload()加载时有弹出框

    解决办法: 1.试试 window.location.href=window.location.href 2.当前页有被post数据的时候reload就会提示刷新 可以尝试重新定向页面地址 3.rel ...