【问题标题】:How to get a jqGrid selected row cells value如何获取 jqGrid 选定的行单元格值
【发布时间】:2011-10-23 03:12:46
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

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

'columnName' 应与您在colModel'name' 属性中使用的名称相同。如果您需要所选行的多列中的值,您可以使用getRowData 而不是getCell

【讨论】:

  • 如果我想从子网格中获取值我必须做什么?只需对子网格 ID 执行相同操作即可?
  • @Saad:您可以通过多种方式使用子网格。在使用subgrid as grid 的情况下,子网格只是另一个网格,因此您可以像使用主网格一样使用它。每个网格通常由对应的<table> 元素的 id 标识。所以你应该只使用你需要的网格的 id。
  • 有没有办法在代码之外使用这些单元格值?你想用它作为'navgrid'中的编辑参数
  • @Saad:看看here
【解决方案2】:

你也可以这样使用

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

【讨论】:

  • 这将返回单元格的整个 html 而不是值
【解决方案3】:

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

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

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

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

我没有意识到您可以相当轻松地将文本框链接到您的 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>

还有一些像这样的 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 更加用户友好。

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

【讨论】:

    【解决方案4】:

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

    var myGrid = $('#myGridId');

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

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

    var selectedRowData = myGrid.getRowData(selectedRowId);

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

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

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

    var selectedRowData;

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

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

    }

    【讨论】:

      【解决方案5】:

      你必须声明 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');

      【讨论】:

        【解决方案6】:

        只需结帐:

        解决方案 1:

        在子网格函数中您必须编写以下内容:

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

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

        解决方案 2:

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

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

        【讨论】:

          猜你喜欢
          • 2012-01-06
          • 2015-01-09
          • 2017-12-23
          • 2014-07-21
          • 2023-03-02
          • 2018-03-10
          • 2011-03-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多