jQuery MiniUI

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

[求助]Inline Grid 静态删除的办法 [复制链接]

Rank: 6Rank: 6

跳转到指定楼层
楼主
发表于 2014-2-24 12:19:32 |只看该作者 |正序浏览
本帖最后由 langben 于 2014-2-24 12:27 编辑


我想先删除行后点保存任务,再真正从数据库删除记录。
这个要怎么弄呢?
我尝试用DataGrid动态删除是可以做到的, 但不是很喜欢再单独写一个remove的后台方法。
现在的增删改查我都是模拟【CellValidation New!】  这个组件封装了save方法,前台把所有操作完成后统一提交到后台代码中处理。

以下是我写的JS, 但提交了,后台收不到删除的信息。。  
  1. function mini_gridRemoveRow(e) {
  2.             var tree = mini.get("TaskGrid");
  3.             var node = tree.getSelectedNode();

  4.             if (node) {
  5.                 if (confirm("小心,确定删除选中任务和所有子任务?")) {
  6.                     tree.removeNode(node);
  7.                     //var rows = tree.getSelecteds();
  8.                     //if (rows.length > 0) {
  9.                     //    tree.removeNode(rows, true);
  10.                     //}
  11.                 }
  12.             }
  13.         }
复制代码


附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 6Rank: 6

18#
发表于 2014-2-26 16:45:32 |只看该作者
factory 发表于 2014-2-24 18:26
getData()获取的是所有的现有tree数据,也就是你界面上展现的相关数据,如果你remove掉,自然也不在getData( ...

谢谢,已解决。

Rank: 8Rank: 8

17#
发表于 2014-2-24 18:26:03 |只看该作者
langben 发表于 2014-2-24 18:12
也就是说我只需要使用getData();就行了吗?
我用你的DEMO完全COPY出来,不修改任何代码, 然后将function ...

getData()获取的是所有的现有tree数据,也就是你界面上展现的相关数据,如果你remove掉,自然也不在getData()里面了
所以需要通过var removed = tree.getChanges("removed");
来获取删除的数据,官网的在线demo是不完整的,我们也说明了的
"在线演示,不提供保存,下载开发包内有此功能。"

你去看下载的试用包里面有这样的代码
var data = tree.getData();
    var removed = tree.getChanges("removed");
    var paramsObj = {
        data: mini.encode(data),
        removed: mini.encode(removed)
    }

Rank: 6Rank: 6

16#
发表于 2014-2-24 18:12:18 |只看该作者
factory 发表于 2014-2-24 17:48
按照我给你的例子去做tree的增删改

另外,getChanges()获取出来的,你上面的截图是正确的, children作为你 ...

也就是说我只需要使用getData();就行了吗?
我用你的DEMO完全COPY出来,不修改任何代码, 然后将function saveData()方法中的alert(在线演示....)改为alert(json), 监控getData()取到的数据,确实是没有_state=removed 这一项。只有insert和modified。
DEMO是:
http://www.miniui.com/demo/index.html#src=tree/treeCRUD.html

Rank: 8Rank: 8

15#
发表于 2014-2-24 17:48:44 |只看该作者
langben 发表于 2014-2-24 17:41
如果用miniGrid.getData(); 只能识别insert和modified,  删除的节点的children值为空。  后台就无法识别 ...

按照我给你的例子去做tree的增删改

另外,getChanges()获取出来的,你上面的截图是正确的, children作为你一个修改的节点的属性字段,当然存在了.里面也当然存在他的子节点数据

getChanges()获取出来的是一个数组,他里面的数据不分层次,所以你不用管他的children,你只需要遍历这个数组,区分他的里面的每一个项的_state就行了,不需要你再去遍历children的项,children有没有也不影响你

Rank: 6Rank: 6

14#
发表于 2014-2-24 17:41:50 |只看该作者
本帖最后由 langben 于 2014-2-24 17:47 编辑
felt 发表于 2014-2-24 17:26
树形 的增删改保存是需要把这棵树的数据发送到后台的
不要用getChanges

如果用miniGrid.getData(); 只能识别insert和modified,  删除的节点的children值为空。  后台就无法识别该删除哪些了。   也就是说miniGrid.getData(); 取得的数据没有remove  。。  
咋整呢?

Rank: 8Rank: 8

13#
发表于 2014-2-24 17:26:08 |只看该作者
langben 发表于 2014-2-24 17:22
保存的JS方法, 改成了miniGrid.getChanges();获取数据。
但为啥父节点下也会生成一样的数据?
...

树形 的增删改保存是需要把这棵树的数据发送到后台的
不要用getChanges

Rank: 6Rank: 6

12#
发表于 2014-2-24 17:22:27 |只看该作者
  1. function mini_updateRow() {            
  2.             var miniGrid = mini.get("TaskGrid");
  3.             //miniGrid.commitEdit();
  4.             var data = miniGrid.getChanges();  //miniGrid.getData();    //这儿是获取数据的地方。
  5.             var json = mini.encode(data);
  6.            
  7.             alert(json);
  8.             return;

  9.             miniGrid.loading("正在用力的保存中,请稍后......");

  10.             $.ajax({
  11.                 url: "/Control/Project.ashx?method=SaveCollTaskInfo",
  12.                 data: { data: json },
  13.                 type: "post",
  14.                 success: function (text) {
  15.                     miniGrid.reload();
  16.                 },
  17.                 error: function (jqXHR, textStatus, errorThrown) {
  18.                     alert(jqXHR.responseText);
  19.                 }
  20.             });
  21.         }
复制代码





保存的JS方法, 改成了miniGrid.getChanges();获取数据。
但为啥父节点下也会生成一样的数据?
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 6Rank: 6

11#
发表于 2014-2-24 16:45:25 |只看该作者
langben 发表于 2014-2-24 16:35
弄明白了。
tree.getChanges();
tree.getData();

刚测试了一下,理解应该是没错了。
当我改成tree.getChanges();  可以正常删除节点, 但是新增节点又出问题了。  会将子节点多生成一份为父节点。   换成tree.getData();才能正常新增。   

新增和删除不能共存么?

Rank: 6Rank: 6

10#
发表于 2014-2-24 16:35:52 |只看该作者
factory 发表于 2014-2-24 15:59
不会的,tree的增删改,你参考这个例子:
http://www.miniui.com/demo/index.html#src=tree/treeCRUD.html
h ...

弄明白了。
tree.getChanges();
tree.getData();
是这两个方法的概念我弄混了。。
第一个是获取有变更的数据。
第二个是获取当前UI所有存在的数据。

我的理解没错吧?

Archiver|普加软件

GMT+8, 2024-6-22 18:50 , Processed in 1.032804 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部