jQuery MiniUI

 找回密码
 立即注册
查看: 7506|回复: 5
打印 上一主题 下一主题

datagrid.getChanges没有获取到数据 [复制链接]

Rank: 1

跳转到指定楼层
楼主
发表于 2014-4-28 11:28:02 |只看该作者 |倒序浏览
在datagrid.drawcell里面我重绘了单元格
在一些事件中我修改了 record记录
然后我调用了datagrid.updateRow方法来更新界面,以便datagrid显示出record的更新
保存的时候我调用datagrid.getChanges("modified",false)不能获取到更新了的数据

这是否跟updateRow的调用或者drawcell事件有关
该如何获取到修改记录

Rank: 8Rank: 8

沙发
发表于 2014-4-28 11:57:39 |只看该作者
把你修改的相关代码贴一下

Rank: 1

板凳
发表于 2014-4-28 12:46:51 |只看该作者
  1.         function checkModule(id, checked) {
  2.             var module = grid.getRecord(id);
  3.             var funs = module.FunctionList;
  4.             module.Allow = checked;
  5.             for (var i = 0; i < funs.length; i++) {
  6.                 var fn = funs[i];
  7.                 fn.Allow = checked;
  8.             }
  9.             grid.updateRow(module);
  10.         }
复制代码

Rank: 8Rank: 8

地板
发表于 2014-4-28 13:28:09 |只看该作者
无星童 发表于 2014-4-28 12:46

fn.Allow = checked;
fn是你的某一条数据,这样的修改,是你自己直接对数据的修改,不是通过miniui的内部的处理,对数据的修改了

grid.updateRow(module);这句也不是更新数据的作用,你没发现他后面第二个field:value参数都没有么,这句的作用只是为了触发ondrawcell事件,好让这个一行进行重绘,这样就能根据你修改的数据,重新显示出勾选还是不勾选.

所以你的getChanges()是获取不到修改数据的.

另外说一点,你这种绘制到单元格上面去的checkbox,已经不算是真正意义上的单元格编辑器.所以不可能通过getChanges()获取到修改数据的,只能全部数据一起获取,然后进行保存处理,具体看我们demo

Rank: 1

5#
发表于 2014-4-28 13:55:20 |只看该作者
本帖最后由 无星童 于 2014-4-28 13:59 编辑
factory 发表于 2014-4-28 13:28
fn.Allow = checked;
fn是你的某一条数据,这样的修改,是你自己直接对数据的修改,不是通过miniui的内部的 ...

你好.
那个updateRow的调用你讲是用来重绘单元格的,我的用意正是如此
因为我前面直接修改数据是并不会反映在datagrid中的界面上
我没有看到例子,只是参照api,发现有updatRow这个么函数,因为看起来第二个参数是用某个数据来更新,所以我想如果不给是不是就是直接重绘了,所以我就试着不给第二个参数,看看效果是不是那样
我还以为这个 getChanges获取是根据datagrid的绑定定数据是否改变来判断的,但是按你说的意思好像只能从界面上触发,不能通过修改绑定数据来触发是吧?

Rank: 1

6#
发表于 2014-4-28 14:30:18 |只看该作者
factory 发表于 2014-4-28 13:28
fn.Allow = checked;
fn是你的某一条数据,这样的修改,是你自己直接对数据的修改,不是通过miniui的内部的 ...

根据这个updateRow 方法我想到一个方案,经尝试发现可以:
我猜这个如果只给第一个参数,就只重绘row,而不更改状态,如果给两个参数,而且第二个参数不同于第一个参数就会修改更新状态。
所以在修改的时候先把原来的record复制一个,修改复制数据,再传入updateRow的第二个参数,结果真触发了
修改代码如下:
  1.         function checkFunction(moduleId, functionId, checked) {
  2.             var record = grid.getRecord(moduleId);
  3.             if (!record) return;
  4.             var copy = mini.clone(record);
  5.             var funs = copy.FunctionList;
  6.             if (!funs) return;

  7.             var obj = getFunction(funs, functionId);
  8.             if (!obj) return;
  9.             obj.Allow = checked;
  10.             if (obj.Allow) {
  11.                 if (copy.Allow == false) {
  12.                     copy.Allow = true;
  13.                 }
  14.             }
  15.             grid.updateRow(record,copy);
  16.         }
复制代码

Archiver|普加软件

GMT+8, 2024-9-20 06:47 , Processed in 1.032040 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部