ASPXGridView ClientSideEvents Как получить значение KeyField для выбранной строки - PullRequest
14 голосов
/ 15 января 2012

Я пытаюсь получить выбранные строки сетки значения KeyField на стороне клиента;

Раньше я пробовал следующее и получал различные результаты:

Метод № 1

<ClientSideEvents RowClick="function(s, e) {var key= grid.GetSelectedKeysOnPage()[0];}" />
//This gives previous selected rows value everytime

Метод № 2

<ClientSideEvents RowClick="function(s, e) { grid.GetRowValues(grid.GetFocusedRowIndex(), 'MyKeyFieldName', OnGetRowValues); }" />
//This gives previous selected row and also gives an error: "A primary key field specified via the KeyFieldName property is not found in the underlying data source. Make sure.. blabla" But the MyKeyFieldName is true and i dont want to make a callback, i dont want to use this method!

Метод № 3

<ClientSideEvents RowClick="function(s, e) { grid.GetRowValues(e.visibleIndex, 'MyKeyFieldName', OnGetRowValues); }">
//This gives the same result with Method #2

Вопрос: как я могу собрать значение KeyField (не предыдущей, но) текущей выбранной строки на клиентском событии RowClick без обратного вызова или обратной передачи?

Ответы [ 3 ]

18 голосов
/ 15 января 2012

Метод № 2 и № 3

Оба эти метода требуют обратного вызова к серверу.

Убедитесь, что вы указали свойство ASPxGridView.KeyFieldName, необходимое для операции выбора строки.

Как я могу получить значение KeyField для выбранной строки @ client без обратного или обратного вызова?

Обработка клиентской стороны ASPxClientGridView.SelectionChanged событие;

Определить только что выбранную строку с помощью свойства « e.isSelected »;

Определение значения ключа keyValue через клиентскую сторону ASPxClientGridView.GetRowKey метод.

Передайте свойство « e.visibleIndex » в качестве параметра:

<ClientSideEvents SelectionChanged="function(s, e) {
    if (e.isSelected) {
        var key = s.GetRowKey(e.visibleIndex);
        alert('Last Key = ' + key);
    }
}" />
1 голос
/ 18 декабря 2014

Как сделать в 3 простых шага.

В моем случае я хочу получить содержимое поля ('ID') из ASPxGridView, когда пользователь нажимает на строку ...

  1. Создайте ClientSideEvent для щелчка строки и поместите «RowClick (s, e);»в функции.
  2. Создайте фактическую функцию, которую вызовет событие, как показано ниже - и здесь есть сложная часть;не используйте GetFocusedRowIndex () для получения индекса, потому что это индекс FOCUSED.Используйте e.visibleIndex

    function RowClick(s, e) {
        // Do callback to get the row data for 'ID' using current row.
        MyAspxGridView.GetRowValues(e.visibleIndex, 'ID', OnGetRowId);
    }
    
  3. Создайте свой обратный вызов, чтобы получить нужное поле.Я получаю «ID».

    function OnGetRowId(idValue) {
        alert('ID: ' + idValue.toString());
    }
    
0 голосов
/ 23 октября 2013
function OnbtnOkClick(s, e) {
    grid.GetRowValues(grid.GetFocusedRowIndex(), 'FieldName1;FieldName2', OnGetRowValues);
}

function OnGetRowValues(values) {
    var fName1 = values[0];
    var fName2 = values[1];
    txt1.SetText(fName1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...