2

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

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

这是我的标记

<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,所以我不知道如何去做。谁能指出我正确的方向。欢迎提出任何建议。

谢谢

4

4 回答 4

5

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

在回调中,您将rowidid<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);
}

datatype: 'local'如果 jqGrid 具有本地数据(您使用或远程数据类型,例如datatype: 'json'与 结合使用) ,则最后一种方法是最好的loadonce: true

更新:在评论中的一些帖子和问题文本的更新之后,我看到您使用jqSuite 用于 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 %>

于 2012-04-28T09:33:01.630 回答
1

以下代码将帮助您通过一些修改来获取您的案例中的用户代码

    <asp:SqlDataSource runat="server" ID="SqlDataSource1" 
    ConnectionString="<%$ ConnectionStrings:SQL2008_449777_fhsConnectionString %>" 
     SelectCommand="SELECT [OrderID], [RequiredDate], [ShipName],
      [ShipCity], [Freight] FROM [Orders]">    </asp:SqlDataSource>    
      <trirand:JQGrid runat="server" ID="JQGrid1" DataSourceID="SqlDataSource1" 

宽度="600px" >

以下是 jquery,它为您提供列 ID

<script type="text/javascript">
function getSelectedRow() { 
       var grid = jQuery("#<%= JQGrid1.ClientID %>");
        var rowKey = grid.getGridParam("selrow");
        if (rowKey)
            alert("Selected row primary key is: " + rowKey); 
          else
            alert("No rows are selected");
      }
    function selectSecondRow() {
        var grid = jQuery("#<%= JQGrid1.ClientID %>");
        grid.setSelection('10249');
        } 
   </script>

或查看以下网址:

http://www.trirand.net/examples/grid/selection/selectedrow_client/default.aspx

于 2012-04-28T07:18:33.783 回答
1

请通读 API。

希望这是您正在寻找的:http ://www.trirand.com/jqgridwiki/doku.php?id=wiki:events

onSelectRow 事件

于 2012-04-28T07:20:21.500 回答
0

最后为了得到我需要的东西,我从Example得到了很多帮助 ,所以解决方案是在 jqGrid 的 Rowselecting 事件上,我使用 jqGrid.SelectedRow 来获取我的单元格的值。

例子:

protected void ModifyAccountUserDetailsjqGrid_RowSelecting(object sender, Trirand.Web.UI.WebControls.JQGridRowSelectEventArgs e)
        {
            ModifyAccountUserDetailsjqGrid.SelectedRow;   
        }

PS Oleg 非常感谢您的慷慨帮助。非常感谢。

于 2012-04-30T06:00:42.050 回答