2012-08-07 30 views
8

Al usar el GridView de DevExpress, me gustaría activar un evento (al lado del cliente) cuando se selecciona una celda (o simplemente se hace clic).DevExpress MVC GridView - Cómo obtener el evento de cliquear celda

Ya hay una manera de obtener los eventos de clic para una fila completa, pero ni el jugueteo ni la documentación me dan ninguna pista sobre cómo lograr esto para las celdas.

Esto es lo que tengo para las filas:

Html.DevExpress().GridView(settings => 
{ 
    // removed a lot of code here 
    settings.ClientSideEvents.RowDblClick = "OnGridRowDblClick"; 
}).Bind(Model).GetHtml() 

que hará que la función de JavaScript OnGridRowDblClick para ser llamado cuando una fila se hace doble clic. Idealmente debería ser algo así como

settings.ClientSideEvents.CellClick = "OnCellClick";

Sin embargo, esto no existe, ni puedo encontrar nada para lograrlo.

Respuesta

12

Es posible conectar al controlador del lado del cliente requerida para un individuo DataCELL por el manejo de la GridViewSettings.HtmlDataCellPrepared evento:

function OnCellClick(visibleIndex, fieldName) { 
    alert(visibleIndex + " " + fieldName); 
} 


@Html.DevExpress().GridView(settings => { 
    ... 
    settings.HtmlDataCellPrepared = (sender, e) => { 
     e.Cell.Attributes.Add(
      "onclick", 
      string.Format("OnCellClick('{0}', '{1}');", e.VisibleIndex, e.DataColumn.FieldName) 
     ); 
    }; 

}).Bind(Model).GetHtml() 
+0

Eres un salvavidas! Como todos los elementos se generaron, tampoco encontré una forma de configurar los eventos onclick. Además, esto me permite ubicarlo solo en las celdas donde es apropiado porque el controlador también permite que ocurra algo de lógica. ¡Gracias! –

+0

Esto no funciona si se llama a 'myGridView.StartEditRow()' al hacer clic en la fila. ¿Cómo se obtiene el evento de clic de celda incluso después de ingresar el modo de edición? –

Cuestiones relacionadas