ASPXGridView ClientSideEvents Как получить выбранное значение ключевого поля Row
Я пытаюсь получить выбранные строки сетки значение 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 Value (не предыдущей, но) текущей выбранной строки в событии RowClick клиента без обратного вызова или обратной передачи?
Ответы
Ответ 1
Метод № 2 и № 3
Оба этих метода требуют обратного вызова на сервер.
Убедитесь, что вы указали свойство ASPxGridView.KeyFieldName, которое требуется для операции выбора строки.
Как я могу собрать значение KeyField для выбранного клиента строки @без обратного вызова или обратной передачи?
Обработать событие на стороне клиента 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);
}
}" />
Ответ 2
Как сделать 3 простых шага.
В моем случае я хочу получить содержимое поля ('ID') из ASPxGridView, когда пользователь нажимает на строку...
- Создайте ClientSideEvent для щелчка по строке и поставьте "RowClick (s, e)"; в функции.
-
Создайте фактическую функцию, которую событие вызовет, как показано ниже - и вот сложная часть; не используйте 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);
}
-
Создайте свой звонок, чтобы получить нужное поле. Я получаю идентификатор.
function OnGetRowId(idValue) {
alert('ID: ' + idValue.toString());
}
Ответ 3
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);
}