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

我正在使用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具有本地数据,则最后一种方法是最好的(使用数据类型:’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”这样的事件的事件处理程序可以在创建网格之前或之后定义(但是在创建了id等于<%= ModifyAccountUserDetailsjqGrid.ClientID%>的< table>元素之后).此外,如果需要,您可以将其定义为一个事件处理程序非常实用的是你想要在你的工程中为所有网格投射一些常见的动作.

转载注明原文:c# – 在jqGrid中单击一行时获取列的值 - 代码日志