gridname.getGridParam('selrow') 为空

gridname.getGridParam('selrow') is null

我有下面的代码。请告诉我如何在 jqGrid 中获取选定的行数据。

我尝试使用以下代码:

function getlist()
{   
    var grid = $("#gridname");
    var rowKey = grid.getGridParam('selrow');
    if (rowKey)
        alert("Selected row primary key is: " + rowKey);
    else
        alert("No rows are selected");
}

这里我得到 "rowkey" 为空。

这是我用来将 json 数据加载到 jqgrid 的函数:

function loadvalues() {    
        $("#gridname").jqGrid({
            datastr: myDataS,
            datatype: "jsonstring",
            jsonReader: {repeatitems: false},
            autoencode:true,
            caption: " ",
            pgbuttons : false,
            viewrecords : false,
            pgtext : "",
            pginput : false,
            rownumbers:true,
            cmTemplate: {sortable:false},
            loadonce: true,
            cellsubmit : "clientArray",

            colNames: ['col1','col2'],
            colModel: [{
                name: 'col1',
                index: 'col1',
                width: 0
            },{
                name: 'col2',
                index: 'col2',
                width: 0
            }
          }]
        });
    }

调用var rowKey = grid.getGridParam('selrow');(其中var grid = $("#gridname");)可以在两种情况下将变量rowKey设置为null

  1. 你执行代码之前 jqGrid是从空的table <table id="gridname"></table>创建的。如果根本没有带有 id="gridname" 的元素,您将得到几乎相同的结果。
  2. 执行代码时网格中没有选择行。

您发布了单独的 getlistloadvalues 函数代码。因此很难说你有什么问题。

顺便说一下,函数loadvalues只能执行一次。它 从空白 <table id="gridname"></table> 创建 网格。在创建过程中,它会被修改为相对复杂的 dives 和 tables 结构。所以一个人不能调用函数 loadvalues more as once。在下一次调用期间,jqGrid 只是测试,网格已经创建并且什么都不做。如果你想重新创建函数loadvalues中的网格,那么你应该在开头添加$("#gridname").jqGrid("GridUnload");