Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么打开jQuery对话框会更改单独jqGrid对象中的数据?_Javascript_Jquery_Jquery Ui_Jqgrid - Fatal编程技术网

Javascript 为什么打开jQuery对话框会更改单独jqGrid对象中的数据?

Javascript 为什么打开jQuery对话框会更改单独jqGrid对象中的数据?,javascript,jquery,jquery-ui,jqgrid,Javascript,Jquery,Jquery Ui,Jqgrid,这是一种奇怪的行为,我会尽力解释清楚。我知道这是不可能的 我将jqGrid对象存储在一个全局对象数组grids={}中,这样可以像grids['myGrid']一样访问myGrid。我还将它们包装在一个具有一些额外属性的对象中,例如传递的设置、网格id、寻呼机id等 说到这里,我在$(document.ready()处初始化了所有网格。我还设置了一个按钮单击以显示一个模态jQuery对话框,其中包含3个网格。它们存储在div中,并在我的页面底部显示display:none 出于某种我无法理解的原

这是一种奇怪的行为,我会尽力解释清楚。我知道这是不可能的

我将jqGrid对象存储在一个全局对象数组
grids={}
中,这样可以像
grids['myGrid']
一样访问myGrid。我还将它们包装在一个具有一些额外属性的对象中,例如传递的设置、网格id、寻呼机id等

说到这里,我在
$(document.ready()
处初始化了所有网格。我还设置了一个按钮单击以显示一个模态jQuery对话框,其中包含3个网格。它们存储在
div
中,并在我的页面底部显示
display:none

出于某种我无法理解的原因,当我单击按钮打开对话框时,我的
栅格
阵列会被修改,对象会丢失其属性。这发生在对话框的
open
事件之后,并且只发生一次。网格仍然可以工作,但在某些情况下,当我访问一些设置时,它们就消失了

这背后有很多代码,所以我不确定如何显示它。有人知道jquerydialog在渲染对话框时是否在幕后做了一些有趣的事情,这可能会影响到生活在其中的jqGrid吗?其他网格功能正常,但它们使用本地数据,而这个网格从服务器获取数据。欢迎任何建议。谢谢

这是在改变发生前后内存中对象的图像。请注意jqGridSettings字段,它还使“J”在发生后变为小写

这是我的javascript中对象定义的开始:

这将像这样使用:

grids = { }; // Global object.
grids["myGrid"] = new ByCommonGrid(myGrid, myGrid-Pager, url, editurl);

所以我想出来了。它在内部与jqGrid没有任何关系,这很好

事实证明,当创建一个对话框时,它会执行任何javascript,这些javascript可能包含在要转换为对话框的html的标记中


在本例中,我使用局部视图来设置用于管理网格的全局变量。当对话框被创建时,它们将被再次实例化,因此我对它们所做的任何初始化都将丢失

你能更清楚地描述一下发生的错误吗。“我的网格数组被修改,对象失去其属性”可以用不同的方式解释。可能有两个屏幕截图:一个好的和一个坏的也会有帮助。你使用哪种网格?您使用的
数据类型。如果从服务器加载数据:是否使用
loadonce
?您使用了哪些jqGrid功能:TreeGrid、子网格、冻结列、分组等等?嗨,Oleg,谢谢您的关注。我添加了一个被修改对象的图像。这是jqGrid 3.4.1、jQuery 1.6.2和jqueryuiv1.8.16。我使用json数据类型,设置如下所述。另外,引发的唯一错误是我的代码试图访问不存在的字段。你真的是指jqGrid 3.4.1的复古版本,而不是当前的4.3.1吗?屏幕上显示的内容目前还不清楚。怎么了?什么是
jqGridSettings
jqGridSettings
?你在调试你的代码的客户端部分还是服务器部分?对不起,我的想法是倒退的。4.3.1是正确的。这是客户端代码。JqGridSettings是网格的包装器对象上的一个字段,它包含初始化时发送到jqGrid的选项。请注意,在顶部图像中,它有许多字段、colModel、colNames等,而在底部图像中,它只有URL。这是在我打开jQuery对话框窗口后发生的,我不明白为什么。我解释您的话,
JqGridSettings
是JavaScript客户端对象。是这样吗?我会首先在整个项目中进行区分大小写的搜索,搜索
JqGridSettings
,然后搜索
JqGridSettings
。我想你在什么地方打字出错了。什么应该是正确的?一般来说,JavaScript具有名称转换,这一点很重要,如果第一个字母是大写,则必须使用
var test=new JqGridSettings创建对象如果没有,您可以使用
var test=JqGridSettings您的案例是什么?
JqGridSettings
是类还是实例?它是全球性的吗?