我正在使用 Asp.Net/C#
,在我的一个页面中,我正在使用 jqGrid
向 Admin
显示用户列表, jqGrid
包含以下列
- 用户代码
- 名字
- 中间名
- 姓氏
- 电子邮件
这是我的标记
<cc1:JQGrid ID="ModifyAccountUserDetailsjqGrid" AppearanceSettings-Caption="User Details" runat="server" Width=800 DataSourceID=ModifyAccountDataSource>
<Columns>
<cc1:JQGridColumn HeaderText="User Code" ShowToolTip=false PrimaryKey=true DataField="UserCode"></cc1:JQGridColumn>
<cc1:JQGridColumn HeaderText="First Name" ShowToolTip=false DataField="FirstName"></cc1:JQGridColumn>
<cc1:JQGridColumn HeaderText="Middle Name" ShowToolTip=false DataField="MiddleName"></cc1:JQGridColumn>
<cc1:JQGridColumn HeaderText="Last Name" ShowToolTip=false DataField="LastName"></cc1:JQGridColumn>
<cc1:JQGridColumn HeaderText="Email" ShowToolTip=false DataField="Email"></cc1:JQGridColumn>
<cc1:JQGridColumn HeaderText="Contact No" ShowToolTip=false DataField="ContactNo"></cc1:JQGridColumn>
<cc1:JQGridColumn HeaderText="Division Name" ShowToolTip=false DataField="DivisionName"></cc1:JQGridColumn>
<cc1:JQGridColumn HeaderText="Last Name" ShowToolTip=false DataField="BranchName"></cc1:JQGridColumn>
</Columns>
</cc1:JQGrid>
我需要的是,当管理员单击一行时,我想获取单击行的用户代码的值。我是 jqGrid
的新手,所以我不清楚我该怎么做。
谁能指出我正确的方向。欢迎提出任何建议。
谢谢
最佳答案
首先,您应该选择符合您要求的最佳回调。通常为 onSelectRow
,但在其他一些情况下,另一个回调如 onCellSelect
, beforeSelectRow
或 ondblClickRow
更好。
在回调中你得到 rowid
(id
或 <tr>
行)作为第一个参数。您可以使用 getCell
, getRowData
或 getLocalRow
获取一些单元格的包含。例如
onSelectRow: function (id) {
// get data from the column 'userCode'
var userCode = $(this).jqGrid('getCell', 'userCode');
alert(userCode);
}
或
onSelectRow: function (id) {
var localRowData = $(this).jqGrid('getLocalRow');
alert(localRowData.userCode);
}
如果 jqGrid 具有本地数据(您使用 datatype: 'local'
或远程数据类型,如 datatype: 'json'
与 loadonce: true
结合使用),最后一种方法是最好的。
已更新:在评论中的一些帖子和问题文本的更新之后,我看到您使用了 jqSuite for ASP.NET WebForms或其他一些基于 jqGrid 而不是免费、开源 JavaScript 库的商业产品 jqGrid .我不使用 jqSuite,也不知道应该如何在 jqSuite 中实现 JavaScript 回调。
我可以建议您使用新的 jqGrid 4.3.2 功能:jQuery like events .你可以做的是这样的代码
var $grid = jQuery("#<%= ModifyAccountUserDetailsjqGrid.ClientID %>");
$grid.bind("jqGridSelectRow", function (id) {
var userCode = $(this).jqGrid('getCell', 'userCode');
alert(userCode);
});
或
var $grid = jQuery("#<%= ModifyAccountUserDetailsjqGrid.ClientID %>");
$grid.bind("jqGridSelectRow", function (id) {
var localRowData = $(this).jqGrid('getLocalRow');
alert(localRowData.userCode);
});
像“jqGridSelectRow”这样的事件的事件处理程序可以在创建网格之前或之后定义(但在创建<table>
等于id
的<%= ModifyAccountUserDetailsjqGrid.ClientID %>
元素之后)。此外,如果需要,您可以将多个定义为一个事件处理程序。如果您想在项目中实现所有网格的一些通用操作,这非常实用。
关于c# - 单击 jqGrid 中的一行获取列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10361083/