c# - 单击 jqGrid 中的一行获取列的值

标签 c# asp.net jqgrid jqgrid-asp.net

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

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

这是我的标记

<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 , beforeSelectRowondblClickRow更好。

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

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/

相关文章:

c# - 在不锁定 WPF 文件的情况下获取图像大小

c# - ASP.NET MVC : loading images from database and displaying their in view

c# - 用于使用参数打开 SSRS 报告新窗口的 ASP 按钮

Webmatrix 和 JQgrid 中的 C# razor

jqgrid - 提高 JQGrid 树网格性能

c# - 从完整路径获取目录

c# - 轮毂部分全宽

c# - System.Web.Services.Protocols.SoapHeaderAttribute.Required 已过时 我现在应该使用什么?

asp.net - 没有 Windows 身份验证的 HttpContext.Current.User.Identity.Name

javascript - jqgrid 复选框更改事件