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

 
代码:
<!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. Java基础之泛型——使用二叉树进行排序(TryBinaryTree)

    控制台程序. 1.实现针对容器类的基于集合的循环 为了让容器类类型的对象能够在基于集合的for循环中可用,类必须并且只需要满足一个要求——必须实现泛型接口java.lang.Iterable<& ...

  2. Silverlight验证相关

    asp.net mvc中有验证,当然在silverlight中也包含有验证规则的但这个就离不开mvvm(其实就是实体层,页面这些东西的组成,没有用过呀,悲哀!连这个概念都理解不了). 关于MVVM验证 ...

  3. Effective C++ 3.资源管理

    //条款13:以对象管理资源 // 1.C++程序中最常使用的资源就是动态分配内存,并且还包括文件描述器,互斥锁,GDI对象.数据库连接.网络socket等.不管哪一种资源,当不再使用的时候必须将其归 ...

  4. UI design principles

    Master's conclusion: 1. fix a color pattern 2. fix the frames the UI will use 3. fix the subject tha ...

  5. table创建固定表头

    布局:两个div,上部内容将表头复制,高度固定,下部div内部将table设置为margin:-**px; 隐藏掉表头,下部div设置overflow,即可. 代码:

  6. .NET: C#: System.Diagnostics

    1. Trace & Debug 理解这两者的区别,Trace有个Listners.Add()非常好用,这里网上有个在ListBox里输出Debug和Trace信息的 using System ...

  7. JS 实现中英文翻译

    缺点就是还是会闪出中文,但是效果还行. var langPackage = { "主题":"Title", "下一页":"Next ...

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

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

  9. -XX:+printGC

    -XX:+printGC 可以打印GC的简要信息[GC 4790K->374K(15872K), 0.0001606 secs][GC 4790K->374K(15872K), 0.000 ...

  10. String[] 转List<String>

    String[] 转List<String> String[] idArr = ids.split(","); List<String> idList = ...