2012-01-15 55 views
14

Estoy tratando de ser seleccionado filas rejilla valor KeyField en el lado del cliente;ClientSideEvents ASPXGridView Cómo ser seleccionado KeyField Valor de Fila

solía seguir los siguientes pasos y obtener diversos resultados:

Método # 1

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

Método # 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! 

Método # 3

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

La pregunta es: ¿Cómo puedo reunir ¿Valor KeyField de la fila seleccionada actual (no anterior pero) en el evento RowClick del cliente sin devolución de llamada o devolución de datos?

Respuesta

17

Método # 2 y # 3

Ambos estos métodos requieren una devolución de llamada al servidor.

Asegúrese de haber especificado la propiedad ASPxGridView.KeyFieldName que se requiere para la operación de selección de filas.

¿Cómo puedo obtener el valor de KeyField de la fila @ cliente seleccionada sin una devolución de llamada o una devolución de datos?

la manija del lado del cliente ASPxClientGridView.SelectionChanged evento;

Determine una fila que se acaba de seleccionar a través de la propiedad "e.isSelected";

Determine el keyValue de la fila a través del lado del cliente ASPxClientGridView.GetRowKey método.

pasar la “e.visibleIndex” propiedad como un parámetro:

<ClientSideEvents SelectionChanged="function(s, e) { 
    if (e.isSelected) { 
     var key = s.GetRowKey(e.visibleIndex); 
     alert('Last Key = ' + key); 
    } 
}" /> 
+0

Gracias, pero esta no es la respuesta que estoy esperando. Me pregunto cómo puedo reunir el valor Keyfield de la fila recientemente seleccionada en el evento Clientside RowClick. Y ASPxClientGridView.GetSelectedKeysOnPage [0] está cambiando cuando la selección cambia, no es lo mismo. – DortGen

+1

¿Has probado mi solución? ¿Qué resultado produce? – Mikhail

+0

FYI si quiere usar la solución de Mikhail; el problema con el uso del evento SelectionChanged: cuando el usuario ordena o filtra; la clave almacenada no se actualiza (el evento SelectionChanged no se desencadena) – kite

0
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); 
} 
1

Cómo en 3 sencillos pasos.

En mi caso, quiero conseguir contenido de un campo ('ID') de ASPxGridView cuando el usuario hace clic en la fila ...

  1. Crear el ClientSideEvent para la fila clic y poner "RowClick (s, e); " en la función.
  2. Crea la función real que el evento llamará como se muestra a continuación, y aquí está la parte engañosa; no use GetFocusedRowIndex() para obtener el índice porque es el índice FOCUSED. Uso 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. Crea tu llamada de vuelta para obtener el campo que desee. Estoy recibiendo 'ID'.

    function OnGetRowId(idValue) { 
        alert('ID: ' + idValue.toString()); 
    } 
    
+0

Sin embargo, hay un ligero retraso aquí. ¿Cómo puedes evitar el retraso? – IyaTaisho

Cuestiones relacionadas