多重选择jqGrid查看错误记录

时间:2015-09-15 15:35:12

标签: jquery jqgrid

我正在使用jqGrid开发一个网格来处理一组记录。 在此网格中,用户可以查看记录的详细信息,其中显示aditional信息,multiselect设置为true,以便在后端一次处理多个记录。

但是,在显示错误记录的记录详细信息时出现问题。

重现错误的步骤:

  1. 选择记录
  2. 查看所选行(在导航栏上)
  3. 关闭对话框
  4. 选择其他记录
  5. 查看所选行(在导航栏上)
  6. 在步骤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
                        }}">
    

    提前致谢。

1 个答案:

答案 0 :(得分:1)

我不是struts2开发者。因此,我无法向您提供如何解决struts2中的问题的确切说明。不过,我会给你一些提示,希望能帮你解决问题。

首先,在我看来你使用jqGrid 4.6。它有我描述的herehere以及相应的解决方法的错误。

您可以通过多种方式解决问题。第一个:你可以用新的free jqGrid 4.9.2替换旧的jqGrid 4.6。要执行此操作,您可以将文件ui.jqgrid.css/struts2-jquery-grid-showcase/struts/themes/ui.jqgrid.css替换为免费jqGrid中的新版本,复制/替换文件夹中的jquery.jqGrid.min.jsjquery.jqGrid.src.jsjquery.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(); } }); 的默认实现。