如何获取jqGrid选定的行单元格值

Saa*_*aad 32 asp.net-mvc jquery jqgrid jqgrid-asp.net

有谁知道如何获取所选JQGrid行的单元格值?即时通讯使用mvc与JQGrid,我想访问所选行的隐藏列的值?

Ole*_*leg 85

首先,您可以获取方法和"selrow"作为参数rowid的选定行,然后您可以使用getCell从相应列获取单元格值:getGridParam

var myGrid = $('#list'),
    selRowId = myGrid.jqGrid ('getGridParam', 'selrow'),
    celValue = myGrid.jqGrid ('getCell', selRowId, 'columnName');
Run Code Online (Sandbox Code Playgroud)

'columnName'应该是你在使用相同的名称'name'的属性colModel.如果您需要来自所选行的许多列的值,则可以使用getRowData而不是getCell.


Mit*_*ari 14

你也可以这样使用

var rowId =$("#list").jqGrid('getGridParam','selrow');  
var rowData = jQuery("#list").getRowData(rowId);
var colData = rowData['UserId'];   // perticuler Column name of jqgrid that you want to access
Run Code Online (Sandbox Code Playgroud)

  • 这将返回单元格的整个 html 而不是值 (2认同)

Mik*_*ill 5

只是补充一下,您还可以根据 rowID 加列索引(而不是列名称)检索 jqGrid 单元格值:

因此,要获取主键 ID 为 1234 的行的第四列(列索引 # 3)中的值,我们可以使用:

var rowID = 1234;
var columnIndex = 3;
var cellValue = $("#" + rowID).find('td').eq(columnIndex).text();
Run Code Online (Sandbox Code Playgroud)

顺便说一句,关于一个完全不相关的话题(但请不要投票给我):

我没有意识到您可以相当轻松地将文本框链接到您的 jqGrid,这样您的用户就可以进行即时搜索,而无需打开“搜索”对话框。

在此处输入图片说明

为此,您需要一些像这样的 HTML:

<input type="text" name="employeeName" id="employeeName" style="width:250px" />

<!--  This will be my jqGrid control and pager -->
<table id="tblEmployees"></table>
<div id="pager"></div>
Run Code Online (Sandbox Code Playgroud)

还有一些像这样的 JavaScript:

$("#employeeName").on('change keyup paste', function () {
    SearchByEmployeeName();
});

function SearchByEmployeeName()
{
    //  Fetch the text from our <input> control
    var searchString = $("#employeeName").val();

    //  Prepare to pass a new search filter to our jqGrid
    var f = { groupOp: "AND", rules: [] };

    //  Remember to change the following line to reflect the jqGrid column you want to search for your string in
    //  In this example, I'm searching through the UserName column.

    f.rules.push({ field: "UserName", op: "cn", data: searchString });

    var grid = $('#tblEmployees');
    grid[0].p.search = f.rules.length > 0;
    $.extend(grid[0].p.postData, { filters: JSON.stringify(f) });
    grid.trigger("reloadGrid", [{ page: 1 }]);
}
Run Code Online (Sandbox Code Playgroud)

这对我来说是一个真正的游戏规则改变者......它确实使 jqGrid 更加用户友好。

用户可以立即开始输入他们的搜索字符串,而不需要打开搜索对话框,记住将运算符更改为“包含”,然后开始输入,并再次关闭搜索对话框。


小智 5

使用“selrow”获取所选行的Id

var myGrid = $('#myGridId');

var selectedRowId = myGrid.jqGrid("getGridParam", 'selrow');
Run Code Online (Sandbox Code Playgroud)

然后使用 getRowData 获取索引 selectedRowId 处的选定行。

var selectedRowData = myGrid.getRowData(selectedRowId);

如果 jqGrid 上的多选设置为 true,则使用“selarrrow”获取所选行的列表:

var selectedRowIds = myGrid.jqGrid("getGridParam", 'selarrrow');

使用循环迭代所选行的列表:

var selectedRowData;
for(selectedRowIndex = 0; selectedRowIndex < selectedRowIds.length; selectedRowIndex++) {
    selectedRowData = myGrid.getRowData(selectedRowIds[selectedRowIndex]);
}
Run Code Online (Sandbox Code Playgroud)