ASPXGridView ClientSideEvents как получить значение ключевого поля выбранной строки
Я пытаюсь получить выбранное значение ключевого поля строк сетки на стороне клиента;
я использовал, чтобы попробовать следующие и получить различные результаты:
Способ #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
вопрос: Как я могу собрать значение ключевого поля (не предыдущей, но) текущей выбранной строки в событии client RowClick без обратного вызова или обратной передачи?
3 ответов
Метод #2 и #3
оба этих метода требуют обратного вызова на сервер.
убедитесь, что вы указали ASPxGridView.Свойство KeyFieldName, необходимое для операции выбора строки.
Как я могу собрать значение ключевого поля выбранной строки @ client без обратного вызова или обратной передачи?
обрабатывать клиентскую сторону ASPxClientGridView.SelectionChanged событие;
определите строку, которая только что была выбрана с помощью "Эл.изменили реализацию" свойства;
определите ключевое значение строки через клиентскую сторону ASPxClientGridView.GetRowKey метод.
пройти "Эл.visibleIndex " свойство как параметр:
<ClientSideEvents SelectionChanged="function(s, e) {
if (e.isSelected) {
var key = s.GetRowKey(e.visibleIndex);
alert('Last Key = ' + key);
}
}" />
как в 3 простых шага.
в моем случае я хочу получить содержимое поля ('ID') из ASPxGridView, когда пользователь нажимает на строку...
- создайте ClientSideEvent для строки нажмите и поместите " RowClick (s, e);" в функцию.
-
создайте фактическую функцию, которую вызовет событие, как показано ниже - и вот сложная часть; не используйте GetFocusedRowIndex () для получения индекса, потому что это сфокусированный индекс. Использовать е.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()); }
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);
}