我想要用户单击的行中的字段值。我写这段代码,但这段代码错了。
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
行。
答案 0 :(得分:2)
首先,您发布的代码包含许多小错误。所以它无法奏效。如果您修改了stackoverflow上发布的原始代码,请在修改中更加仔细。
例如:
colNames
只包含两个元素,但colModel
- 8个元素。因此,有人会收到有关数组长度不同的错误,而且代码不能正常工作; datatype
选项:一个值为'local'
,另一个值为'json'
; firstButtonColumnIndex = 0
的结尾(请参阅第一行)。当前代码使用未定义的grid
并将其解释为全局变量。关于您的主要问题:
您使用“在jqGrid中点击获取索引行”作为问题的标题,但您在问题文本中写道,您 rowid
始终为0而不是rowIndex
< / em>的。要获取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的信息假设您在JSON中填写了错误的id
,这些'jQGridHandler.ashx'
生成了id
下的服务器代码。 id
必须在页面上包含唯一值。您可以使用开发人员工具检查行的<tr>
属性(网格的{{1}}元素的ID)或使用Fiddler的Firebug来捕获JSON,将从服务器返回。如果您在本地化错误时遇到问题,则应使用JSON数据附加问题。