【问题标题】:free-jqgrid: getLocalRow return false in free-jqgrid4.13.6free-jqgrid:getLocalRow 在 free-jqgrid4.13.6 中返回 false
【发布时间】:2017-02-16 04:18:15
【问题描述】:

我们在 jqgrid 4.3 中使用了以下代码。现在我正在升级到 4.13.6。下面的代码在 4.3 中工作,但在 4.13 中,它返回 false...请帮助...

var grid = $("#myGrid").jqGrid('getRowData');
$.each(grid, function(key, value) {
    selectedRow = key+1;
    var rowData = $("#myGrid").jqGrid('getLocalRow', selectedRow);
});

我在填充网格时没有使用任何 id。数据类型:json,行号:true。

当我调试时,我看到每行的 ID 是 'jqg41'、'jqg42' 等...有时它是 'jqg61'、'jqg62' 等...这是一个随机数,附加在后面'jqg'

更多代码(但未完成的代码)

$grid.jqGrid({
                    datatype: 'json',
                    url: 'myUrl/byFileId.do?custId='+custId,
                    mtype: 'GET',
                    ajaxSubgridOptions: { async: false },
                    colNames:[ col1, col2 ...],
                    colModel:[    
                        . . .
                        . . .
                        . . .
                    ],  
                    headertitles:true,
                    rowNum:999,
                    rowList:[],
                    pager: '',
                    records: 1000,
                    pgbuttons : false,
                    viewrecords : false,
                    pgtext : null,
                    pginput : false,
                    gridview:true,
                    ignoreCase:true,
                    rownumbers:true,
                    sortname: 'invdate',
                    viewrecords: true,
                    sortorder: 'desc',
                    multiselect: true, 
                    caption: "Customer Search Result",
                    height: '100%',
                    editurl: 'clientArray',
                    autoencode: true,
                    loadonce: true,
                    multiselectWidth: 30,
                    width: rmtPageTitleWidth,
                    viewsortcols : [true,'vertical',true],
                    onSortCol: function (index, idxcol, sortorder) {
                        rowIdAndNoOfRowPair = [];
                        if (this.p.lastsort >= 0 && this.p.lastsort !== idxcol
                                && this.p.colModel[this.p.lastsort].sortable !== false) {
                            $(this.grid.headers[this.p.lastsort].el).find(">div.ui-jqgrid-sortable>span.s-ico").show();
                        }
                    },

【问题讨论】:

  • 抱歉,您发布的代码绝对错误。如果key 是rowid,那么key+1 不是。它是做什么壳的?您需要获取选中行的数据还是网格的所有本地数据?为什么不指定rowid?您使用哪些数据和哪个网格?顺便说一句,我开始回答你之前的问题,建议在customerId 列中设置key: true 属性,这会通知jqGrid 使用customerId 列中的值作为rowids。 您的代码仍然错误,您应该解释一下,该怎么办。
  • 我推荐你阅读the article,我在这里解释了什么是rowid。请参阅the picture 和下面的说明。
  • @Oleg:在 jqgrid 4.3 中,'key' 总是给我 0,但行的 id 从 '1' 开始。这就是为什么我做了“key+1”。现在到你的第二个问题,我不能将客户 ID 设为 key=true,因为我可以在网格中有多个相同 ID 的客户。我想要什么:我想去通过每一行(选择和未选择)并获取数据,然后我可以在javascript中对这些数据应用逻辑,然后发送到后端。现在我想知道为什么它将行的ID创建为'jqg
  • 我再说一遍,你解释的是自动生成rowids 如果输入数据错误并且不包含id信息。您永远不应该对自动生成的 id 的算法有任何假设。我还是没看懂你的描述。你永远不应该发布这么小的代码片段。我只能猜测您的意思是像您之前的问题中那样带有datatype: "json"loadonce: true 的网格。您不需要“遍历每一行”。您可以使用$("#myGrid").jqGrid("getGridParam", "data") 来获取对所有本地数据的引用。

标签: jquery jqgrid free-jqgrid


【解决方案1】:

你可以使用

var localData = $("#myGrid").jqGrid("getGridParam", "data");

以数组的形式获取所有本地数据。它是jqGrid内部数据的引用

更新:如果网格是排序或过滤 本地并且想要以相同的顺序从所有行中获取数据,那么你应该得到lastSelectedData 参数而不是data。您可以通过使用 jqGrid 的 forceClientSorting: true 参数以及 loadonce: true 来强制在从服务器加载后在本地对数据进行排序。

demohttps://jsfiddle.net/OlegKi/akv51mdq/演示lastSelectedData在本地数据的情况下,没有id信息。另一个演示 https://jsfiddle.net/OlegKi/Ljejoh21/ 对一次从服务器加载的数据执行相同操作。

【讨论】:

    猜你喜欢
    • 2016-04-14
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2019-11-27
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多