Вопрос по c#, jqgrid-asp.net, asp.net, jqgrid – Получение значения столбца по щелчку строки в jqGrid

2

я используюAsp.Net/C# На одной из моих страниц я используюjqGrid отобразить список пользователейAdmin ,jqGrid содержит следующие столбцы

User Code First Name Middle Name Last Name Email

Вот моя разметка

<code><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>
</code>

Что мне нужно, так это то, что когда администратор щелкает строку, я хочу получить значение кода пользователя для строки, по которой щелкнули. Я новичок вjqGrid поэтому у меня нет четкого представления о том, как я могу это сделать. Кто-нибудь может указать мне правильное направление. Любые предложения приветствуются.

Спасибо

Ваш Ответ

4   ответа
0

Наконец, чтобы получить то, что мне нужно, я получил большую помощь отпример  Таким образом, решение было на случай Rowselecting jqGrid, я использовал jqGrid.SelectedRow, чтобы получить значение моей ячейки.

Пример:

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

П.С. Олег большое спасибо за вашу щедрую помощь. Очень признателен.

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" 

Ширина = & Quot; 600px & Quot; & GT;

Ниже приводится JQuery, который дает вам идентификатор столбца

<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>

Или проверьте следующий URL:

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

это работает, но это дает мне значение номера строки, мне нужно значение столбца. спасибо. Priyank Patel
5

Сначала вы должны выбрать лучший обратный звонок, который соответствует вашим требованиям. Как правило, это будет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).

UPDATED: После некоторых постов в комментариях и обновления текста вашего вопроса я вижу, что вы используетеjqSuite для ASP.NET WebForms или какой-то другойcommercial product основанный на jqGrid вместо бесплатной библиотеки JavaScript с открытым исходным кодомjqGrid, Я не использую jqSuite и не знаю, как следует реализовывать обратные вызовы JavaScript в jqSuite.

Я могу предложить вам использовать новую функцию jqGrid 4.3.2:jQuery как события, Что вы можете сделать, это код как

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 %> созданы). Более того, вы можете определить больше как один обработчик событий, если это необходимо. Это очень удобно, если вы хотите внедрить в свой проект некоторые общие действия для всех сеток.

@freebird: Добро пожаловать! Я рад слышать, что проблема решена.
Я отредактировал мой вопрос, моя разметка что-то в этом роде Priyank Patel
@свободная птица:onSelectRow это вариант jqGrid. Таким образом, вы можете включить его в том же месте, где вы используетеdatatype, url или жеcolModel: $("#grid").jqGrid({datatype: 'local', colModel: [{{'userCode'}], высота: 'auto', gridview: true, onSelectRow: function (id) {var localRowData = $ (this) .jqGrid (& apos; getLocalRow & apos;); alert (localRowData.userCode) );}}) `
попробую это и сообщу, большое спасибо за ваш интерес. Priyank Patel
У меня есть вопрос в моем файле .js, мне нужно написать только onSelectRow: function (id) {// получить данные из столбца & amp; userCode & apos; var userCode = $ (this) .jqGrid ("getCell", "userCode"); оповещения (USERCODE); } или что-то еще требуется Priyank Patel
1

Пожалуйста, ознакомьтесь с API.

Надеюсь, это то, что вы ищете:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:events

событие onSelectRow

но как мне получить значение моей первой ячейки. Это то, что мне нужно. Спасибо Priyank Patel
Полагаю, можно использовать методы getRow, getColumn, getCell. У меня нет опыта работы с JqGrid, но я уверен, что вы сможете использовать это и получать данные.

Похожие вопросы