jQuery MiniUI

标题: 又来问题了,获取不到主窗口Grid的数据 [打印本页]

作者: guoweidong    时间: 2013-1-11 16:49:49     标题: 又来问题了,获取不到主窗口Grid的数据

grid.load({ GridData: mini.encode(window.Owner.grid.getData()) });
在子窗口,window.Owner.grid.getData()这样调用不到主窗口的数据,当子窗口使用window.Owner.grid.addRows(result, 0);
添加父窗口Grid的数据获取不到。关了重新打开也取不到。
作者: niko    时间: 2013-1-11 16:55:00

你这样处理跨iframe的操作:

1)父页面:
top["win1"] = window;

2)子页面:
var win = top["win1"];
win.abc(); //调用定义的方法

使用top对象共享跨页面的window对象。

作者: guoweidong    时间: 2013-1-11 17:10:58

niko 发表于 2013-1-11 16:55
你这样处理跨iframe的操作:

1)父页面:

这样用了,子页面
var win = top["win1"];
    $(document).ready(function () {
        alert(win.contentWindow);
        grid.load({ GridData: mini.encode(window.Owner.grid.getData()) });
        setGridShowContent(grid);
    });
找不到对像啊undefined
作者: niko    时间: 2013-1-11 17:16:05

var win = top["win1"];
win.abc(); //因为win是window对象,你直接调用方法。
作者: guoweidong    时间: 2013-1-11 17:18:32

本帖最后由 guoweidong 于 2013-1-11 17:41 编辑
niko 发表于 2013-1-11 17:16
var win = top["win1"];
win.abc(); //因为win是window对象,你直接调用方法。

直接alert(win)也取不到对像啊。

我父页在直接这样用   top["win1"] = window;

刷新了下,取到了。

不过,效果还有我之前用的一样,当父窗的Grid数据更新后就不行了。

win.grid.getData()使用这个方法就没效果,可以获取到win.grid对像。

使用win.grid.getChanges()也是获取不到。


function abc()
    {
        alert(mini.encode(grid.getSelecteds()));
    }
上面的方法在父页面,子页面直接win.abc()还是不提示。
作者: niko    时间: 2013-1-12 18:06:38

你既然能调用到另外iframe页面的abc方法,就肯定可以操作里面的JS组件对象。
作者: guoweidong    时间: 2013-1-13 10:40:10

niko 发表于 2013-1-12 18:06
你既然能调用到另外iframe页面的abc方法,就肯定可以操作里面的JS组件对象。 ...

对像是可以调到,但是对像的方法getData()没有正常
作者: niko    时间: 2013-1-14 09:15:14

找到对象,就可以调用对象的方法。
或者你做一个例子,上传下。
作者: guoweidong    时间: 2013-1-14 11:08:19

niko 发表于 2013-1-14 09:15
找到对象,就可以调用对象的方法。
或者你做一个例子,上传下。

这个例子不带数据不好测的,这个环境你们也应该理解意思了。
作者: factory    时间: 2013-1-14 13:40:50

guoweidong 发表于 2013-1-14 11:08
这个例子不带数据不好测的,这个环境你们也应该理解意思了。

你做个非常简单的例子,数据弄几个静态的,只要能重现出问题,我们就可以定位解决了
作者: guoweidong    时间: 2013-1-14 15:50:32

factory 发表于 2013-1-14 13:40
你做个非常简单的例子,数据弄几个静态的,只要能重现出问题,我们就可以定位解决了 ...

弹窗后,添加数据,然后再点“测试按钮” 读取不数据。
作者: factory    时间: 2013-1-14 16:19:44

guoweidong 发表于 2013-1-14 15:50
弹窗后,添加数据,然后再点“测试按钮” 读取不数据。

我们本地看下
作者: factory    时间: 2013-1-14 16:34:10

guoweidong 发表于 2013-1-14 15:50
弹窗后,添加数据,然后再点“测试按钮” 读取不数据。

[attach]1262[/attach]

现在这个例子是好的了,你跑跑看,不需要改什么,我故意把表格不加载数据
只要弹出之后,能正确将子页面的数据加到父页面的表格里面去就可以了
你下载下来试试


作者: guoweidong    时间: 2013-1-14 16:56:22

factory 发表于 2013-1-14 16:34
现在这个例子是好的了,你跑跑看,不需要改什么,我故意把表格不加载数据
只要弹出之后,能正确将子页 ...

不是不对啊。我说的是弹窗后添加好数据,再点另一个按钮,获取不到。
作者: factory    时间: 2013-1-14 17:03:23

guoweidong 发表于 2013-1-14 16:56
不是不对啊。我说的是弹窗后添加好数据,再点另一个按钮,获取不到。

[attach]1264[/attach]

我这里可以读取到额。。。。test.rar没做什么修改,只是把mini.open的url改成了我本地的"2.html"


作者: guoweidong    时间: 2013-1-14 17:07:41

本帖最后由 guoweidong 于 2013-1-14 17:12 编辑
factory 发表于 2013-1-14 17:03
我这里可以读取到额。。。。test.rar没做什么修改,只是把mini.open的url改成了我本地的"2.html"

...


难道又是浏览器的问题?我是win7  IE10  最新版
真的是IE兼容问题,我换了几好个,最后就一个淘宝浏览器可以。这样的话很麻烦!
作者: factory    时间: 2013-1-14 17:08:40

guoweidong 发表于 2013-1-14 17:07
难道又是浏览器的问题?我是win7  IE10  最新版

你有其他的不,试试ff,chrom,或者低于IE10的版本
作者: guoweidong    时间: 2013-1-14 17:12:34

factory 发表于 2013-1-14 17:08
你有其他的不,试试ff,chrom,或者低于IE10的版本

真的是IE兼容问题,我换了几好个,最后就一个淘宝浏览器可以。这样的话很麻烦!
作者: niko    时间: 2013-1-14 17:54:20

guoweidong 发表于 2013-1-14 16:56
不是不对啊。我说的是弹窗后添加好数据,再点另一个按钮,获取不到。

你这个例子,我先运行1,弹出2,点击2中的按钮,在1中添加数据,是可以的啊。
ie, ff都试过了。
作者: guoweidong    时间: 2013-1-14 18:12:38

本帖最后由 guoweidong 于 2013-1-14 18:54 编辑
niko 发表于 2013-1-14 17:54
你这个例子,我先运行1,弹出2,点击2中的按钮,在1中添加数据,是可以的啊。
ie, ff都试过了。 ...


添加数据是可以,添加好了数据再点1中的第2个按扭就取不到这个数据了。 我是IE10 win7   使用淘宝浏览器可以。


SCRIPT5007: 无法获取未定义或 null 引用的属性“getComponents”   刚开始加载的时候会提示一次。
SCRIPT5011: 不能执行已释放 Script 的代码                                        添加过后使用到grid.getData()的方法就会出现



我又把IE版本降到9了,还是一样有问题。问题一样。

作者: niko    时间: 2013-1-14 19:17:59

你好好描述下,你是如何操作的。

作者: guoweidong    时间: 2013-1-14 19:34:48

本帖最后由 guoweidong 于 2013-1-14 20:34 编辑
niko 发表于 2013-1-14 19:17
你好好描述下,你是如何操作的。


我就是正常操作的啊。要不我远程给你看看也行。我已不在指望这种做法了,还是用后台Session吧。
作者: factory    时间: 2013-1-15 09:16:24

guoweidong 发表于 2013-1-14 19:34
我就是正常操作的啊。要不我远程给你看看也行。我已不在指望这种做法了,还是用后台Session吧。 ...

除了IE10的其他IE版本,还有FF,chrom,ff我都测试过,没有问题,都能读取到数据的
作者: niko    时间: 2013-1-16 15:41:19

在主页面方法:
function addRow(newRows) {            
    newRows = mini.clone(newRows);
    grid.addRows(newRows, 0);
}
注意:newRows = mini.clone(newRows);
把子页面传递的JS对象,克隆下,这样子页面销毁后,正常了。
作者: guoweidong    时间: 2013-1-16 16:19:20

niko 发表于 2013-1-16 15:41
在主页面方法:
function addRow(newRows) {            
    newRows = mini.clone(newRows);

原来我加的是管理员,终于给解决了,几天的问题了~~~
作者: niko    时间: 2013-1-16 17:27:16

问题和操作步骤描述清晰,解决其实可以是分分妙妙......




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2