2012-08-07 26 views
8

Sử dụng GridView của DevExpress, tôi muốn kích hoạt sự kiện (clientside) khi một ô được chọn (hoặc chỉ cần nhấp vào).DevExpress MVC GridView - Cách nhận sự kiện nhấp chuột di động

Đã có một cách để có được các sự kiện nhấp chuột cho toàn bộ hàng, nhưng không khó hiểu xung quanh cũng như tài liệu hướng dẫn cho tôi bất kỳ đầu mối nào để đạt được điều này cho các ô.

Đây là những gì tôi có cho các hàng:

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

nào sẽ làm cho chức năng javascript OnGridRowDblClick để được gọi khi liên tiếp là nhấp đúp. Lý tưởng nhất là nên có một cái gì đó giống như

settings.ClientSideEvents.CellClick = "OnCellClick";

Tuy nhiên, điều này không tồn tại, cũng không phải tôi có thể tìm thấy bất cứ điều gì để đạt được điều này.

Trả lời

12

Có thể đính kèm handler client-side cần thiết cho một DataCell cá nhân bằng cách xử lý GridViewSettings.HtmlDataCellPrepared sự kiện:

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

Bạn là một cuộc sống tiết kiệm! Vì tất cả các phần tử đều được tạo nên, tôi cũng không tìm thấy cách thiết lập các sự kiện onclick. Bên cạnh đó, điều này cho phép tôi đặt nó chỉ trên các ô nơi nó phù hợp bởi vì trình xử lý cũng cho phép một số logic xảy ra. Cảm ơn! –

+0

Điều này không hoạt động nếu 'myGridView.StartEditRow()' được gọi trên hàng nhấp chuột. Làm cách nào để nhận sự kiện nhấp chuột di động ngay cả sau khi chế độ chỉnh sửa được nhập? –

Các vấn đề liên quan