在jqGrid中单击一行时获取列的值

Pri*_*tel 2 c# asp.net jqgrid jqgrid-asp.net

我正在使用Asp.Net/C#,在我的一个页面中,我jqGrid用来显示用户列表Admin,jqGrid包含以下列

  1. 用户代码
  2. 名字
  3. 中间名字
  4. 电子邮件

这是我的标记

<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>
Run Code Online (Sandbox Code Playgroud)

我需要的是,当管理员点击一行时,我想获得被点击的行的用户代码的值.我是新手jqGrid,所以我不清楚我是如何做到这一点的.任何人都可以指出我正确的方向.欢迎任何建议.

谢谢

Ole*_*leg 5

首先,您应该选择符合您要求的最佳回调.通常它会onSelectRow,但在其他一些情况下,另一种回调是onCellSelect,beforeSelectRowondblClickRow更好.

在回调中,您获得rowid(行id<tr>行)作为第一个参数.您可以使用getCell,getRowDatagetLocalRow获取某些单元格的包含.例如

onSelectRow: function (id) {
    // get data from the column 'userCode'
    var userCode = $(this).jqGrid('getCell', 'userCode');
    alert(userCode);
}
Run Code Online (Sandbox Code Playgroud)

要么

onSelectRow: function (id) {
    var localRowData = $(this).jqGrid('getLocalRow');
    alert(localRowData.userCode);
}
Run Code Online (Sandbox Code Playgroud)

如果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);
});
Run Code Online (Sandbox Code Playgroud)

要么

var $grid = jQuery("#<%= ModifyAccountUserDetailsjqGrid.ClientID %>");
$grid.bind("jqGridSelectRow", function (id) {
    var localRowData = $(this).jqGrid('getLocalRow');
    alert(localRowData.userCode);
});
Run Code Online (Sandbox Code Playgroud)

像"jqGridSelectRow"这样的事件的事件处理程序可以在创建网格之前或之后定义(但是在创建等于的<table>元素之后).此外,如果需要,您可以将其定义为一个事件处理程序 非常实用的是你想要在你的工程中为所有网格投射一些常见的动作.id<%= ModifyAccountUserDetailsjqGrid.ClientID %>