easyUI中的datagrid、treegrid编辑了数据,可以用getChanges命令来获取更新情况。按道理,有"inserted"、"updated"、"deleted"三种类型,增改删嘛,但不知为何,"inserted"我从来没有获取到过。

deleted比较没有问题,只要有remove,就可以获取;

updated的话,有修改也可以。

对于inserted,有个变通的办法是,新增的时候,选中新增行,然后beginEdit,再endEdit;这样该行即可进入updated矣。有一个问题要注意:datagrid、treegrid(其实treegrid继承自datagrid)每行会有个主键,比如id,用于识别行。那么我们只要在新增行的时候,将此id赋一个唯一值,再乘以-1,提交到后台,就可知该行是insert而不是update,从而不会与其他update行混淆。

还有一个注意的问题,就是这些新增行的数据不能齐全,要至少有一个字段没有值,这样才能进入到update里,真奇怪。

function InsertItem(nodes,groupAId, node) {
var _id = getUtc() * -1;
var _data = {
'id': _id
, 'name': node.text
//, 'seq': 0 //空出一个值不赋,这样才能进入update。原因不明
, 'isValid': true
, 'pId': node.pId
, 'itemId': node.itemId
, 'isGroup': false
};
_grid.treegrid('append', {
parent: groupAId,
data: [_data]
});
_grid.treegrid('select', _data.id);
_grid.treegrid('beginEdit', _data.id);
_grid.treegrid('endEdit', _data.id); return _id;
}

猜想:

通常我们用数据库的主键id来做datagrid的主键,其实可以分开来,多设一个字段给easyUI,比如设一个eid,用eid来做datagrid的行主键;从后台过来的时候,eid == id。而新增的时候,新增行的eid被赋予唯一值,而id则不赋值。这样的好处是

1)有可能在getChanges的时候,可以获取到inserted;

2)不用将 id 赋予一个负值这么折腾

但不想专门去试这个东西。不值得。

easyUI的getChanges中的inserted的更多相关文章

  1. [easyui] - 在easyui的table中展示提示框

    因为在easyui的table中字段过多,而无法展示全时,被迫只能使用这个方法. 使用方式: 在 $('#dg').datagrid({ 后的 queryParams: form2Json('sear ...

  2. 触发器中的inserted表和deleted表

    触发器语句中使用了两种特殊的表:deleted 表和 inserted 表.Microsoft? SQL Server 2000 自动创建和管理这些表.可以使用这两个临时的驻留内存的表测试某些数据修改 ...

  3. 在EasyUI的DataGrid中嵌入Combobox

    在做项目时,须要在EasyUI的DataGrid中嵌入Combobox,花了好几天功夫,在大家的帮助下,最终看到了它的庐山真面: 核心代码例如以下: <html> <head> ...

  4. SQL触发器中的inserted表和deleted表

    开发也有年头了,但是触发器确实用的比较少,但是无容置疑触发器确实不错, 最近项目要求需要用到的触发器特别多.频繁,觉得很有必要记录和积累下. 在触发器语句中用两个特殊的表一个是deleted表和ins ...

  5. 项目EasyUi和JS中遇到的问题总汇

    近期因为项目用到EasyUi,曾经仅仅是听过,可是没有详细用过.仅仅能一边学一边做.如今将做的过程中遇到的一些难点总结例如以下,以备后用: EsayUi使用: Json格式:key:value,key ...

  6. jQqery EasyUI dategrid行中多列数据的可编辑操作

    最近的项目中需要在前台dategrid列表中直接修改某些列的数据,并且修改后的数据需要不通过后台而自动更新在列表中. 带着这一问题开始寻找实现的思路,首先想到的就是去jQqery EasyUI官网找例 ...

  7. jQuery EasyUI DataGrid API 中文文档

        扩展自$.fn.panel.defaults,用 $.fn.datagrid.defaults重写了 defaults . 依赖 panel resizable linkbutton pagi ...

  8. EasyUI在MVC4中需要部分刷新页面时load()后页面变形问题!

    最近在使用MVC4与EasUI过程中遇到些容易导致界面变形的问题,纠结了很久,但其实当发现问题在哪里时,倒觉得最终还是自己对MVC4的概念没把握好,OK,show time.  本示例Contact ...

  9. EasyUI在window中使用kindeditor 4.1.10在IE9中不能回显、获得焦点编辑的问题

    描述 :kindeditor4.1.10版本是当前最新的版本,在浏览器兼容性和功能方面都是值得一赞的,在开发中能方便快捷的满足一些开发需求. 问题 :  问题总是有的.  在使用过程中,遇到EasyU ...

随机推荐

  1. 一次URL请求过程--tomcat

    一:请求的过程 1.DNS域名解析 2.建立TCP连接(三次握手) 3.发送请求--tomcat进行处理 4.四次挥手关闭连接 二:详解1---DNS域名解析 1.浏览器会检查缓存中有没有这个域名对应 ...

  2. vue set方法

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  3. 关于C/C++的一些思考(4)

    C++的类型转换规则: 对于数值类型而言:当一个较小数值类型赋值给一个较大数值类型的时候,C++支持隐式的类型转换,不会有任何的损失: 对于数值类型而言,当一个较大数值类型赋值给一个较小数值类型时候, ...

  4. [Python3网络爬虫开发实战] 1.2.3-ChromeDriver的安装

    前面我们成功安装好了Selenium库,但是它是一个自动化测试工具,需要浏览器来配合使用,本节中我们就介绍一下Chrome浏览器及ChromeDriver驱动的配置. 首先,下载Chrome浏览器,方 ...

  5. buf.swap32()

    buf.swap32() 返回:{Buffer} 将 Buffer 解释执行为一个32位的无符号整数数组并以字节顺序交换到位.如果 Buffer 的长度不是32位的倍数,则抛出一个 RangeErro ...

  6. 用element-ui的走马灯carousel轻松实现自适应全屏banner图

    写在前面:网站轮播图建议使用swiper组件,非常方便快捷.vue轮播图插件之vue-awesome-swiper 接手一个项目,轮播图是用element-ui的carousel实现的,看起来效果还不 ...

  7. Django之初

    Django之初 Django的开始: #安装Django: pip3 install django #创建Django项目: django-admin startproject 项目名 #比如: d ...

  8. 慕课笔记利用css进行布局【两列布局】

    <html> <head> <title>两列布局</title> <style type="text/css"> bo ...

  9. POJ-1988Cube Stacking/HDU-2818Building Block;

    Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 23283   Accepted: 8166 Ca ...

  10. ORACLE审计小结

    ORACLE审计小结 1.什么是审计 审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ORACLE_BASE/admin/$ORACLE_ ...