Row Editing in DataGrid简单讲解
来源:互联网 发布:mac快速接入 编辑:程序博客网 时间:2024/05/01 16:40
具体例子可以去官网上看,官网的demo和documentation都是非常有用的。
下面是从官网上拿来的代码,这里只看js吧,底下做了分析
var editIndex = undefined; function endEditing(){ if (editIndex == undefined){return true} if ($('#dg').datagrid('validateRow', editIndex)){ var ed = $('#dg').datagrid('getEditor', {index:editIndex,field:'productid'}); var productname = $(ed.target).combobox('getText'); $('#dg').datagrid('getRows')[editIndex]['productname'] = productname; $('#dg').datagrid('endEdit', editIndex); editIndex = undefined; return true; } else { return false; } } function onClickRow(index){ if (editIndex != index){ if (endEditing()){ $('#dg').datagrid('selectRow', index) .datagrid('beginEdit', index); editIndex = index; } else { $('#dg').datagrid('selectRow', editIndex); } } } function append(){ if (endEditing()){ $('#dg').datagrid('appendRow',{status:'P'}); editIndex = $('#dg').datagrid('getRows').length-1; $('#dg').datagrid('selectRow', editIndex) .datagrid('beginEdit', editIndex); } } function removeit(){ if (editIndex == undefined){return} $('#dg').datagrid('cancelEdit', editIndex) .datagrid('deleteRow', editIndex); editIndex = undefined; } function accept(){ if (endEditing()){ $('#dg').datagrid('acceptChanges'); } } function reject(){ $('#dg').datagrid('rejectChanges'); editIndex = undefined; } function getChanges(){ var rows = $('#dg').datagrid('getChanges'); alert(rows.length+' rows are changed!'); }
重点放在js上,可以看到首先定义了一个变量editIndex,这个变量记录了当前的编辑行索引
可以想的到,这个变量将会在“编辑开始”时被赋值,而在“编辑终止”时被还原成undefined,这个也就是各个方法之间通信的公共变量。
下面要介绍一个最重要的方法——endEditing,可以看到这个方法在下面的好几个方法中都用到了,非常的关键。
那么endEditing是用来做什么的呢?首先看名字来猜猜,这个方法大概是用来结束编辑的,再看看代码
需要校验通过才能终止编辑,返回true,由于终止编辑了那么editIndex又被置为undefined。否则返回false
这个方法主要是对“终止编辑”这个操作做一个校验,若通过校验则做一些收尾的工作,比如endEditing这行记录,翻译一些代码,将editIndex置为undefined等。
从而印证了刚才观察到的,这个方法是要配合别的方法一起使用的,也就是所谓的需要“终止编辑”的方法,先来看看它们吧
onClickRow(index)
这是datagrid提供的一个onClickRow事件的处理函数,当点击某一行时触发,在Row Editing中我们希望点击某一行时可以将那一行变为可编辑行。
那么很简单:
$('#dg').datagrid('beginEdit', index)
若是已经在编辑其中一行了,然后再点击另一行的这种clickRow呢?那么需要判断editIndex和index是否相等了
若不相等,则要先将当前编辑行“终止编辑”,再“开始编辑”新点击的那一行。若相等,那么还是选中当前编辑行
function onClickRow(index){ if (editIndex != index){ if (endEditing()){ $('#dg').datagrid('beginEdit', index); editIndex = index; } else { $('#dg').datagrid('selectRow', editIndex); } } }
接下来的几个方法其实也都是围绕着editIndex来进行的。其中datagrid的appenRow方法可以给新增行赋初始值
在accept时需要调用acceptChanges方法,这个方法是接受之前的改变用的,也就是说这个方法真正的将刚才所改变的值保存了下来
若是没有调用这个方法前,即使“终止编辑”了,但是若按cancel那个按钮,则未acceptChanges的row全部复原。另外,还可以通过getChanges来查看还未accept的changes的条数
搞懂这个demo其实也就掌握了大多数情况datagrid的编辑情况,为之后更复杂的datagrid打下的一个良好的基础。
- Row Editing in DataGrid简单讲解
- Multi-row Editing in the ASP.NET DataGrid...
- How to select the full row in DataGrid
- [译] Spark DataGrid Editing SPEC
- CodeForce 825B Five-In-a-Row<简单模拟>
- easyui-editing datagrid 批量保存数据 一
- easyui-editing datagrid 批量保存数据 二
- easyui-editing datagrid 批量保存数据 一
- easyui-editing datagrid 批量保存数据 二
- Editing Existing Items in Checklist
- wpf 得到datagrid 的 row
- easyui中datagrid的row
- TEXT IN ROW
- 关于text in row
- All In Row
- Four in a Row
- trees in a row
- Four In A Row
- 计算机经典书籍电子书合集
- 数据挖掘笔记-情感倾向点互信息算法
- IE9下不能100%显示iframe问题的三种解决方法
- git如何恢复本地删除的文件
- GCC笔记
- Row Editing in DataGrid简单讲解
- 页面翻转效果
- nginx介绍(二) 架构篇
- hibernate的核心类和接口
- linux
- 有问题的阶乘之和运行操作行得到输出结果和运行时间的表格(应为还没有看附录)
- linux
- gnu binutils使用方法指南
- FullBNT实例应用(转载他人的),研究一下