0

我想要用户单击的行中字段的值。我写了这段代码,但这段代码是错误的。

var firstButtonColumnIndex = 0;
    grid = $('#list'), firstButtonColumnIndex, buttonNames = {};

grid.jqGrid({
    url: 'jQGridHandler.ashx',
    datatype: 'local',
    direction: "rtl",
    datatype: 'json',
    height: 250,
    colNames: ['', ''],
    colModel: [
        { name: 'WorkOrderNo', width: 100, sortable: true },
        { name: 'AssetNo', width: 150, sortable: true },
        { name: 'WorkDescription', width: 400, sortable: true },
        { name: 'WorkOrderDate', width: 100, sortable: true },
        { name: 'WorkOrderTime', width: 100, sortable: true },
        { name: 'Remark', width: 260, sortable: true },
        { name: 'del', width: 20, sortable: false, search: false,
            formatter: function () {
                return "<span class='ui-icon ui-icon-trash'></span>"
            }
        },
        { name: 'details', width: 20, sortable: false, search: false,
            formatter: function () {
                return "<span class='ui-icon ui-icon-document'></span>"
            }
        }
    ],
    gridview: true,
    rowNum: 10,
    rowList: [10, 20, 30],
    pager: '#pager',
    //  sortname: 'WorkOrderNo',
    viewrecords: true,
    sortorder: 'asc',
    rownumbers: true,
    beforeSelectRow: function (rowid, e) {
        var iCol = $.jgrid.getCellIndex(e.target);
        if (iCol >= 7) {
            alert("rowid=" + rowid + "\nButton name: " + buttonNames[iCol]);
        }
        // prevent row selection if one click on the button
        return (iCol >= firstButtonColumnIndex) ? false : true;
    }
});

buttonNames[7] = 'Remove';
buttonNames[8] = 'Details';
grid.jqGrid('navGrid', '#pager', { add: false, edit: false, del: false }, {}, {},
    {}, { multipleSearch: true, overlay: false, width: 460 });

但在beforeSelectRow事件rowid总是 0。我想WorkOrderNo点击返回行。

请帮助我。谢谢大家

4

1 回答 1

2

首先,您发布的代码包含许多小错误。所以它不能工作。如果您修改原始代码以在 stackoverflow 上发布,请在修改时更加小心。

例如:

  • colNames仅包含两个元素,但是colModel- 8 个元素。因此,人们收到有关数组长度不同的错误,并且代码无法正常工作;
  • 您定义datatype选项两次:一次使用 value 'local',另一次使用 value 'json'
  • 您应该使用逗号 (',') 而不是分号 (';') 作为结尾firstButtonColumnIndex = 0(参见第一行)。当前代码使用 undefinedgrid并将其解释为全局变量。

对于您的主要问题:

您使用“Get Index Row Clicked in jqGrid”作为问题的标题,但您在问题的文本中写道,您rowid总是 0 而不是rowIndex。要获取rowIndex,您可以将代码修改为beforeSelectRow以下内容:

beforeSelectRow: function (rowid, e) {
    var iCol = $.jgrid.getCellIndex(e.target);
    if (iCol >= 7) {
        alert("rowid=" + rowid +
              "\nrowIndex=" + $(e.target).closest("tr.jqgrow")[0].rowIndex +
              "\nButton name: " + buttonNames[iCol]);
    }
    // prevent row selection if one click on the button
    return (iCol >= firstButtonColumnIndex) ? false : true;
}

您始终rowid为 0 的信息假设您id在生成服务器代码的 JSON 中填写错误'jQGridHandler.ashx'。必须在页面上id具有唯一值。您可以使用开发人员工具检查行的属性(网格元素的idid )或使用Firebug的Fiddler来捕获将从服务器返回的 JSON。如果您在本地化错误时遇到问题,您应该使用 JSON 数据附加您的问题。<tr>

于 2012-02-13T17:06:31.177 回答