Как получить значение выбранных ячеек строки jqGrid - PullRequest
32 голосов
/ 09 августа 2011

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

Ответы [ 6 ]

85 голосов
/ 09 августа 2011

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

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

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

14 голосов
/ 18 февраля 2014

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

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
4 голосов
/ 02 июля 2014

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

Итак, чтобы получить значение в четвертом столбце (индекс столбца № 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 гораздо более удобным для пользователя.

Пользователи могут сразу начать вводить строку поиска, вместо того, чтобы открывать диалоговое окно поиска, не забудьте изменить оператор на «содержит», затем начать ввод и снова закрыть диалоговое окно поиска.

3 голосов
/ 03 августа 2017

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

var myGrid = $('#myGridId');

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

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

var selectedRowData = myGrid.getRowData(selectedRowId);

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

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

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

var selectedRowData;

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

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

}

1 голос
/ 22 ноября 2016

Просто оформить заказ:

Решение 1:

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

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

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

Решение 2:

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

{name:"id",index:"id",hidden:true, width:15,key:true, jsonmap:"id"},
1 голос
/ 12 мая 2015

Вам нужно объявить 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');

...