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

 
代码:
<!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. Unity3D 基于预设(Prefab)的泛型对象池实现

    背景 在研究Inventory Pro插件的时候,发现老外实现的一个泛型对象池,觉得设计的小巧实用,不敢私藏,特此共享出来. 以前也看过很多博友关于对象池的总结分享,但是世界这么大,这么复杂到底什么样 ...

  2. 在windows下配置pthread

    http://blog.csdn.net/qianchenglenger/article/details/16907821 简单介绍windows平台下的pthread线程库

  3. 比较Date时间先后

    if ([firstDetailSelect compare:secondDetailSelect] == NSOrderedDescending) { [MBProgressHUD showErro ...

  4. C++Primer 第十八章

    //1.异常:待研究 //2.命名空间: // A:多个库将名字放置在全局命名空间中将引发命名空间污染. // B:命名空间为防止名字冲突提供了更加可控的机制.命名空间分割了全局命名空间,其中每个命名 ...

  5. 趣谈PHP 多态

    多态性是指相同的操作或函数.过程可作用于多种类型的对象上并获得不同的结果.不同的对象,收到同一消息将可以产生不同的结果,这种现象称为多态性. 多态性允许每个对象以适合自身的方式去响应共同的消息.多态性 ...

  6. [转]EasyUI——常见用法总结

    原文链接: EasyUI——常见用法总结 1. 使用 data-options 来初始化属性. data-options是jQuery Easyui 最近两个版本才加上的一个特殊属性.通过这个属性,我 ...

  7. Android studio删除工程项目,androidstudio

    本新手最近学Android都是用的eclipse.其实个人觉得eclipse不错,可能接触Android不久,倒也不觉得它慢还是怎样.对于Google的Android studio也是早有耳闻,前两天 ...

  8. linux第8天 connect强化

    今天没有系统学习什么新知识,就是把以前学到的知识复习了一下,其中有几点值得注意 connect(fd, (struct sockaddr *)addr, sizeof(struct sockaddr_ ...

  9. mac tomcat

    alampsdeMacBook-Pro:bin alamps$ ./startup.sh Using CATALINA_BASE: /Users/alamps/Library/apache-tomca ...

  10. Android Handler简单使用

    package com.example.myhandlertest3; import android.os.Bundle; import android.os.Handler; import andr ...