2012-08-07 7 views
8

Mit DevExpress GridView möchte ich ein (clientside) Ereignis auslösen, wenn eine Zelle ausgewählt (oder einfach angeklickt) wird.DevExpress MVC GridView - So erhalten Sie ein Klickereignis

Es gibt bereits eine Möglichkeit, die Klickereignisse für eine ganze Zeile zu erhalten, aber weder herumspielen noch die Dokumentation gibt mir einen Hinweis, wie dies für Zellen erreicht werden kann.

Dies ist, was ich für die Zeilen haben:

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

, die die JavaScript-Funktion verursacht OnGridRowDblClick aufgerufen werden, wenn eine Zeile doppelt angeklickt wird. Im Idealfall sollte es jedoch so etwas wie

settings.ClientSideEvents.CellClick = "OnCellClick";

sein, das nicht existiert, noch kann ich nichts finden, dies zu erreichen.

Antwort

12

Es ist möglich, die erforderliche Client-seitige-Handler für einen einzelnen Datacell zu befestigen, indem die Handhabung GridViewSettings.HtmlDataCellPrepared Veranstaltung:

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

Du bist ein Lebensretter! Da die Elemente alle generiert wurden, habe ich auch keine Möglichkeit gefunden, die onclick-Ereignisse zu setzen. Außerdem erlaubt es mir, es nur auf Zellen zu platzieren, wo es angebracht ist, weil der Handler auch etwas Logik erlaubt. Vielen Dank! –

+0

Dies funktioniert nicht, wenn 'myGridView.StartEditRow()' beim Zeilenklick aufgerufen wird. Wie erhält man ein Klickereignis, selbst nachdem der Bearbeitungsmodus eingegeben wurde? –

Verwandte Themen