Как получить значение ячеек выбранной строки jqGrid

кто-нибудь знает, как получить значение ячеек выбранной строки JQGrid ? я использую mvc с JQGrid, я хочу получить доступ к значению скрытого столбца выбранной строки ?

6 ответов


сначала вы можете получить rowid выбранной строки в отношении getGridParam способ и 'selrow' в качестве параметра, а затем вы можете использовать getCell чтобы получить значение ячейки из соответствующего столбца:

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

на 'columnName' должно быть то же имя, которое вы используете в 'name' свойства colModel. Если вам нужны значения из многих столбцов выбранной строки, вы можете использовать getRowData вместо getCell.


вы можете использовать таким образом,

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

чтобы добавить, вы также можете получить значение ячейки jqGrid на основе индекса столбца rowID plus (а не имени столбца):

Итак, чтобы получить значение в четвертом столбце (индекс столбца # 3) для строки с идентификатором первичного ключа 1234, мы могли бы использовать это:

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 намного более удобным для пользователя.

пользователи могут сразу начать вводить свою строку поиска, вместо того, чтобы открывать диалоговое окно поиска, не забудьте изменить оператор на "contains", а затем начать введите и снова закройте диалоговое окно поиска.


yo должны декларировать 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');


Просто Проверьте Это:

Решение 1 :

в функции Subgrid вы должны написать следующее:

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

здесь row_id - переменная, которую вы определяете в subgrid как параметр. И id - имя столбца, который вы хотите получить значение ячейки.

решение 2 :

если вы получаете идентификатор строки Jqgrid в alert, установите идентификатор первичного ключа как key:true В ColModels. Так вы получите значение вашего идентификатор базы данных в оповещении. Вот так:

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

используйте "selrow", чтобы получить выбранный идентификатор строки

var myGrid = $('#myGridId');

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

а затем используйте getRowData для получения выбранной строки в index selectedRowId.

var selectedRowData = myGrid.getRowData(selectedRowId);

если для параметра multiselect установлено значение true в jqGrid, используйте "selarrrow" для получения списка выбранных строк:

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

используйте цикл для итерации списка выбранных строк:

var selectedRowData;

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

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

}