【问题标题】:jqGrid view wrong record with multiselectjqGrid使用多选查看错误记录
【发布时间】:2015-09-24 19:47:32
【问题描述】:

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

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

重现错误的步骤:

  1. 选择记录
  2. 查看所选行(在导航栏上)
  3. 关闭对话框
  4. 选择其他记录
  5. 查看所选行(在导航栏上)

第 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
                    }}">

提前致谢。

【问题讨论】:

    标签: jquery jqgrid


    【解决方案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 的新版本,复制/替换文件夹/struts2-jquery-grid-showcase/struts/js/plugins/ 中的jquery.jqGrid.min.jsjquery.jqGrid.src.jsjquery.jqgrid.min.map 并替换grid.filter.js 和@来自/struts2-jquery-grid-showcase/struts/js/plugins/ 的987654331@ 与具有相同名称的empty 文件。最后yu应该将grid.locale-en.js/struts2-jquery-grid-showcase/struts/i18n/替换为free jqGrid中对应的frome。顺便说一下,您将完全替换 struts2 使用的 jqGrid 4.6 以释放与 jqGrid 4.6 具有不同良好向上兼容性的 jqGrid。它应该可以解决所描述的问题。

    或者,您可以保留旧 jqGrid 4.6 的使用,但添加 navigatorViewOptionsnavigatorEditOptions 指定 beforeInitData 删除以前创建的查看或编辑/添加表单。相应的代码可能类似于

    navigatorViewOptions="{
                    recreateForm: true,
                    beforeInitData: function () {
                        $('#viewmod' + this.id).remove();
                    }
                }"
    

    navigatorViewOptions="{
                    recreateForm: true,
                    beforeInitData: function () {
                        $('#editmod' + this.id).remove();
                    }
                }"
    

    另一种选择是使用以下 JavaScript 代码

    $.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();
        }
    });
    

    它定义了beforeInitData的默认实现。

    【讨论】:

    • 谢谢。似乎可以解决问题。我开始从事一个不同的项目。只要我有时间,我会尝试你的指示。谢谢。
    • @Raimundo:不客气!我一开始就写给你说我自己不使用struts2。我只是试着给你写一些可能的方法来解决这个问题(如果我理解正确的话)。如果您能尽快为其他 struts2 开发人员撰写您选择的方式以及该方式是否真的有效,那就太好了。
    • 我选择了备选方案 2。虽然我认为更新备选方案是最好的备选方案,但我无权这样做。谢谢。
    • @Raimundo:不客气!感谢您提供信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多