我正在使用jqGrid开发一个网格来处理一组记录。 在此网格中,用户可以查看记录的详细信息,其中显示aditional信息,multiselect设置为true,以便在后端一次处理多个记录。
但是,在显示错误记录的记录详细信息时出现问题。
重现错误的步骤:
在步骤5中,显示的记录是步骤1中的记录选择。
您可以使用以下链接重现错误:
http://struts.jgeppert.com/struts2-jquery-grid-showcase/index.action
这是我用来创建网格的代码
<sjg:grid id="rtvReplicationJobsGrid"
autowidth="true"
gridview="true"
indicator="true"
dataType="json"
onCompleteTopics="onCompleteGrid"
href="%{remoteurl}"
pager="true"
gridModel="data"
rowList="10,15,20,50"
rowNum="15"
rownumbers="false"
editinline="false"
navigator="true"
navigatorAdd="false"
navigatorEdit="false"
navigatorDelete="false"
navigatorView="true"
navigatorSearchOptions="{multipleSearch:true}"
multiselect="true"
multiboxonly="true"
navigatorExtraButtons="{
'delete' : { id: 'deleteButton',
icon: 'ui-icon-trash',
title: 'Delete Jobs',
onclick: deleteJobsDialogFunction
},
seperator: {
title : 'seperator'
},
replicated : {
id : 'replicatedButton',
title : 'Mark as Replicated',
caption : 'Replicated',
icon: 'ui-icon-check',
onclick: markAsReplicatedDialogFunction
},
replicate : {
id : 'replicateButton',
title : 'Mark for Replication',
caption : 'Replicate',
icon: 'ui-icon-play',
onclick: startReplicationDialogFunction
}}">
提前致谢。
答案 0 :(得分:1)
我不是struts2开发者。因此,我无法向您提供如何解决struts2中的问题的确切说明。不过,我会给你一些提示,希望能帮你解决问题。
首先,在我看来你使用jqGrid 4.6。它有我描述的here和here以及相应的解决方法的错误。
您可以通过多种方式解决问题。第一个:你可以用新的free jqGrid 4.9.2替换旧的jqGrid 4.6。要执行此操作,您可以将文件ui.jqgrid.css
从/struts2-jquery-grid-showcase/struts/themes/ui.jqgrid.css
替换为免费jqGrid中的新版本,复制/替换文件夹中的jquery.jqGrid.min.js
,jquery.jqGrid.src.js
和jquery.jqgrid.min.map
/struts2-jquery-grid-showcase/struts/js/plugins/
并使用相同名称的空文件从grid.filter.js
替换grid.formedit.js
和/struts2-jquery-grid-showcase/struts/js/plugins/
。最后,yu应该将grid.locale-en.js
从/struts2-jquery-grid-showcase/struts/i18n/
替换为来自free jqGrid的相应frome。在这种方式中,您将完全替换struts2使用的jqGrid 4.6来释放jqGrid,这与jqGrid 4.6的向上兼容性有所不同。它应该解决所描述的问题。
或者您可以使用旧的jqGrid 4.6,但要添加指定navigatorViewOptions
的{{1}}和navigatorEditOptions
,以删除以前创建的View或Edit / Add表单。相应的代码可能类似于
beforeInitData
和
navigatorViewOptions="{
recreateForm: true,
beforeInitData: function () {
$('#viewmod' + this.id).remove();
}
}"
另一种选择是使用以下JavaScript代码
navigatorViewOptions="{
recreateForm: true,
beforeInitData: function () {
$('#editmod' + this.id).remove();
}
}"
定义$.jgrid = $.jgrid || {};
$.jgrid.edit = $.jgrid.edit || {};
$.jgrid.view = $.jgrid.view || {};
$.extend(true, $.jgrid.view, {
recreateForm: true,
beforeInitData: function () {
$("#viewmod" + this.id).remove();
}
});
$.extend(true, $.jgrid.edit, {
recreateForm: true,
beforeInitData: function () {
$("#editmod" + this.id).remove();
}
});
的默认实现。