jQuery MiniUI

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

请教关闭tab页前保存grid数据的问题,感谢 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2013-9-11 14:37:27 |只看该作者 |倒序浏览
场景:顶层窗口打开的tab页中有个启用单元格编辑grid,想要在关闭tab页时判断是否有未保存的数据。我目前的代码如下:
顶层窗口:
tabs.on("beforecloseclick", function (e) {
            var sender = e.sender;
            var iframe = tabs.getTabIFrameEl(e.tab);
            if (iframe != undefined) {
                var cWin = iframe.contentWindow;
                var grid = cWin.grid;
                grid.setCurrentCell(null);//结束当前单元格编辑
                if (grid != undefined) {
                    var data = grid.getChanges();
                    if (data.length > 0) {
                        e.cancel = true;
                        var tab = e.tab;
                        mini.showMessageBox({
                            title: tab.title,
                            iconCls: "mini-messagebox-question",
                            buttons: ["yes", "no", "cancel"],
                            message: "有尚未保存的更改,是否保存?",
                            callback: function (action) {
                                switch (action) {
                                    case "yes":
                                        cWin.saveStraight(data);//ajax出错
                                        sender.removeTab(tab);
                                    case "no":
                                        sender.removeTab(tab);
                                    case "cancel":
                                        return;
                                }
                            }
                        });
                    }
                }
            }
        });


问题1:grid.setCurrentCell(null);没有作用,是用法不对么
问题2:cWin.saveStraight(data);我的本意是调用tab页的ajax来保存数据,但是chrome下,ajax会出错,xhr的readyState为0,reponseStatus也为0(然而数据其实是保存进去了)。ie10出错
问题3:把saveStraight(data);放到顶层窗口,ajax出错,数据不能保存
ps:在页面本身调用该ajax来保存数据是没用问题的

Rank: 8Rank: 8

沙发
发表于 2013-9-11 16:48:32 |只看该作者
1.结束编辑是grid.commitEdit()

2.报的什么错误?
你测试下http://www.miniui.com/demo/#src=datagrid/datagrid.html 跨页面调用方法,是否也有错误?

3.saveStraight(data)放到顶层出错是什么错?
你的意思是通过调用saveStraight(data)来保存就出错? 直接写$.ajax来保存就没错?

Rank: 2

板凳
发表于 2013-9-12 08:58:13 |只看该作者
factory 发表于 2013-9-11 16:48
1.结束编辑是grid.commitEdit()

2.报的什么错误?

那个函数其实就是一个ajax调用 本身如果不跨页面调用是没问题的
但是在顶层窗口调用这个方法就出xhr错误了 我再看看可不可能是.net后台的问题
先谢谢了

Rank: 2

地板
发表于 2013-9-12 09:01:22 |只看该作者
bittersweet 发表于 2013-9-12 08:58
那个函数其实就是一个ajax调用 本身如果不跨页面调用是没问题的
但是在顶层窗口调用这个方法就出xhr错误 ...

在顶层调用 tab页frame中的那个方法会 首先进入错误回调函数
然后执行后台方法(chrome),ie10会一直loading

Rank: 2

5#
发表于 2013-9-12 09:22:58 |只看该作者
感觉问题还是出在跨页面调用函数的问题上,把ajax方法saveStraight放在顶层页面是没有问题的
才疏学浅不太了解为什么调用其他页面的函数中有ajax方法时会出问题T.T

Rank: 8Rank: 8

6#
发表于 2013-9-12 09:33:28 |只看该作者
bittersweet 发表于 2013-9-12 09:01
在顶层调用 tab页frame中的那个方法会 首先进入错误回调函数
然后执行后台方法(chrome),ie10会一直loa ...

能否给个可以运行并且重现问题的例子

Rank: 2

7#
发表于 2013-9-12 10:17:04 |只看该作者
factory 发表于 2013-9-12 09:33
能否给个可以运行并且重现问题的例子

刚才又在demo网站(.net)上试了一下,结果大致一样
用到的页面是demo/tabs/load.html 和 demo/datagrid/celledit.html
随便换一个tab页的url为celledit.html
load.html 里修改代码:
tabs.on("beforecloseclick", function (e) {
            var iframe = tabs.getTabIFrameEl(e.tab);
            var cWin = iframe.contentWindow;
            var grid = cWin.grid;
            var data = grid.getChanges();
            var json = mini.encode(data);
            cWin.saveDataTest(json);

            //$.ajax({
            //    url: "../data/AjaxService.aspx?method=SaveEmployees",
            //    data: { data: json },
            //    type: "post",
            //    success: function (text) {
            //        grid.reload();
            //    },
            //    error: function (jqXHR, textStatus, errorThrown) {
            //        debugger;
            //        alert("wtf");
            //        alert(jqXHR.responseText);
            //    }
            //});
        });
saveDataTest代码就是注释掉的那一段,celledit.html里编辑单元格后,执行上面的代码,会出现我说的问题
不采用跨页面函数调用没有问题

Rank: 8Rank: 8

8#
发表于 2013-9-12 14:37:46 |只看该作者
bittersweet 发表于 2013-9-12 10:17
刚才又在demo网站(.net)上试了一下,结果大致一样
用到的页面是demo/tabs/load.html 和 demo/datagrid/ce ...

你直接给个例子上传吧,听着有点晕

Archiver|普加软件

GMT+8, 2024-5-12 10:51 , Processed in 1.027593 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部