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

时间:2011-08-09 11:01:30

标签: jquery asp.net-mvc jqgrid jqgrid-asp.net

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

6 个答案:

答案 0 :(得分:85)

首先,您可以使用rowid方法和'selrow'作为参数获取所选行的getGridParam,然后您可以使用getCell获取单元格值来自相应的专栏:

var myGrid = $('#list'),
    selRowId = myGrid.jqGrid ('getGridParam', 'selrow'),
    celValue = myGrid.jqGrid ('getCell', selRowId, 'columnName');

'columnName'应与您在'name'的{​​{1}}属性中使用的名称相同。如果您需要所选行的多列中的值,则可以使用getRowData代替getCell

答案 1 :(得分:13)

你也可以这样使用

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

答案 2 :(得分:4)

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

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

var rowID = 1234;
var columnIndex = 3;
var cellValue = $("#" + rowID).find('td').eq(columnIndex).text();
不过,关于一个完全不相关的话题(但请不要让我失望):

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

enter image description here

要做到这一点,你需要一些像这样的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>

还有一些像这样的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 }]);
}

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

用户可以立即开始输入搜索字符串,而不需要打开搜索对话框,记得将操作符更改为&#34;包含&#34;,然后开始输入,然后再次关闭搜索对话框。

答案 3 :(得分:3)

使用“selrow”获取选定的行ID

var myGrid = $('#myGridId');

var selectedRowId = myGrid.jqGrid("getGridParam", 'selrow');

然后使用getRowData获取index selectedRowId的所选行。

var selectedRowData = myGrid.getRowData(selectedRowId);

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

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

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

var selectedRowData;

for(selectedRowIndex = 0; selectedRowIndex < selectedRowIds .length; selectedRowIds ++) {

   selectedRowData = myGrid.getRowData(selectedRowIds[selectedRowIndex]);

}

答案 4 :(得分:1)

你必须宣布de vars ......

var selectedRowId = $('#list').jqGrid ('getGridParam', 'selrow');
var columnName = $('#list').jqGrid('getCell', selectedRowId, 'columnName');

var nombre_img_articulo = $('#list')。jqGrid('getCell',selectedRowId,'img_articulo');

答案 5 :(得分:1)

刚结帐:

解决方案1:

在子网格功能中您必须编写以下内容:

var selectid = $(this).jqGrid('getCell', row_id, 'id');
alert(selectid);

其中row_id是您在subgrid中定义为参数的变量。 id是要获取单元格值的列名。

解决方案2:

如果在警报中获取Jqgrid Row Id然后在ColModels中将主键ID设置为key:true。因此,您将在警报中获得数据库ID的值。像这样:

{name:"id",index:"id",hidden:true, width:15,key:true, jsonmap:"id"},