2013-05-10 11 views
9

Có sự kiện nào tương đương với onEditComplete cho Kendo Grid không, nơi sự kiện chỉ xảy ra sau khi nội dung của ô đã được chỉnh sửa?Kendo Grid tương đương với onEditComplete

Documentation đề cập đến sự kiện "chỉnh sửa", nhưng điều này sẽ kích hoạt ngay khi ô chuyển sang chế độ chỉnh sửa (Vì vậy, điều này tương đương với onBeginEdit).

Sự kiện gần nhất với hành vi mong muốn mà tôi tìm thấy là sự kiện "lưu", nhưng sự kiện này chỉ kích hoạt khi nội dung của ô đã bị thay đổi. Tôi muốn một sự kiện cháy ngay khi di chuyển ra khỏi chế độ chỉnh sửa.

Chỉnh sửa của lưới được đặt thành hiện thực.

+0

Vì vấn đề này dường như đã mở trong ba năm nay và Telerik không cung cấp giải pháp chính thức - bạn có mở yêu cầu tính năng tại Telerik không? Có một sự kiện "itemChange" trong Grid, nhưng nó không có giấy tờ và nó không cho bạn biết tên cột. – Rolf

Trả lời

8

Vì vậy, do những nhận xét tôi đã gỡ bỏ câu trả lời trước đây của tôi - bằng cách sử dụng sự kiện mờ trên các hộp đầu vào (hoặc các yếu tố khác) dường như hoạt động:

Trên sự kiện grid.edit, hãy sử dụng jquery để liên kết với hộp văn bản (hoặc bất kỳ sự kiện điều chỉnh chỉnh sửa nội dòng nào khác) được kích hoạt khi tiêu điểm bị mất. Nối nó vào định nghĩa lưới ... và rõ ràng là thay thế cảnh báo bằng mã của bạn.

edit: function (e) { 
     alert('Edit Fired'); 
     $('input.k-input.k-textbox').blur(function() { 
      alert('blur event called'); 
     }); 
    }, 

Tôi đã thử nghiệm điều này bằng cách sửa đổi chỉnh sửa mẫu mã inline here

My đầy đủ nguồn địa phương của biên tập - chỉ nhìn thấy những sự kiện chỉnh sửa trên def lưới:

<div id="example" class="k-content"> 
    <div id="grid"></div> 

    <script> 
     $(document).ready(function() { 
      var crudServiceBaseUrl = "http://demos.kendoui.com/service", 
       dataSource = new kendo.data.DataSource({ 
        transport: { 
         read: { 
          url: crudServiceBaseUrl + "/Products", 
          dataType: "jsonp" 
         }, 
         update: { 
          url: crudServiceBaseUrl + "/Products/Update", 
          dataType: "jsonp" 
         }, 
         destroy: { 
          url: crudServiceBaseUrl + "/Products/Destroy", 
          dataType: "jsonp" 
         }, 
         create: { 
          url: crudServiceBaseUrl + "/Products/Create", 
          dataType: "jsonp" 
         }, 
         parameterMap: function (options, operation) { 
          if (operation !== "read" && options.models) { 
           return { models: kendo.stringify(options.models) }; 
          } 
         } 
        }, 
        batch: true, 
        pageSize: 20, 
        schema: { 
         model: { 
          id: "ProductID", 
          fields: { 
           ProductID: { editable: false, nullable: true }, 
           ProductName: { validation: { required: true } }, 
           UnitPrice: { type: "number", validation: { required: true, min: 1 } }, 
           Discontinued: { type: "boolean" }, 
           UnitsInStock: { type: "number", validation: { min: 0, required: true } } 
          } 
         } 
        } 
       }); 

      $("#grid").kendoGrid({ 
       dataSource: dataSource, 
       pageable: true, 
       height: 430, 
       toolbar: ["create"], 
       // added in hook to here to bind to edit element events. 
       // blur is fired when an element loses focus 
       edit: function (e) { 
        alert('Edit Fired'); 
        $('input.k-input.k-textbox').blur(function (e) { 
         alert('blur event called'); 
        }); 
       }, 
       columns: [ 
        "ProductName", 
        { field: "UnitPrice", title: "Unit Price", format: "{0:c}", width: "100px" }, 
        { field: "UnitsInStock", title: "Units In Stock", width: "100px" }, 
        { field: "Discontinued", width: "100px" }, 
        { command: ["edit", "destroy"], title: "&nbsp;", width: "172px" }], 
       editable: "inline" 
      }); 
     }); 
    </script> 
</div> 
+0

Tôi đã ràng buộc nguồn dữ liệu từ xa và sử dụng điều này có nghĩa là sự kiện được kích hoạt khi chính nguồn dữ liệu được thay đổi.Tôi muốn các nguồn dữ liệu được nguyên vẹn, tôi nghĩa đen chỉ cần sự kiện để cháy nếu tế bào đi ra khỏi chế độ chỉnh sửa. – l46kok

+1

tôi đã quản lý để móc vào sự kiện mờ trên hộp văn bản, điều đó chỉ nên kích hoạt khi hộp văn bản bị mất tiêu điểm - tôi đã thử nghiệm. nếu bạn muốn móc vào bất kỳ phần tử nào khác ngoài hộp văn bản, chỉ cần thay đổi bộ chọn jquery trong mã sự kiện grid.edit - xem chỉnh sửa của tôi –

1

Bạn đã thử các Change Event

"thay đổi

Bị sa thải khi người sử dụng chọn một dòng của bảng hoặc tế bào trong lưới."

Ví dụ - được mục dữ liệu đã chọn (s) khi sử dụng lựa chọn ô

<div id="grid"></div> 
<script> 
function grid_change(e) { 
    var selectedCells = this.select(); 
    var selectedDataItems = []; 
    for (var i = 0; i < selectedCells.length; i++) { 
    var dataItem = this.dataItem(selectedCells[i].parentNode); 
    if ($.inArray(dataItem, selectedDataItems) < 0) { 
     selectedDataItems.push(dataItem); 
    } 
    } 
    // selectedDataItems contains all selected data items 
} 
$("#grid").kendoGrid({ 
    columns: [ 
    { field: "name" }, 
    { field: "age" } 
    ], 
    dataSource: [ 
    { name: "Jane Doe", age: 30 }, 
    { name: "John Doe", age: 33 } 
    ], 
    selectable: "multiple, cell" 
}); 
var grid = $("#grid").data("kendoGrid"); 
grid.bind("change", grid_change); 
</script> 
+0

Một lần nữa, như được quy định rõ ràng trong OP, tôi cần một sự kiện kích hoạt khi chỉnh sửa được hoàn thành trên ô. Những gì bạn đề nghị là nhiều hơn hoặc ít hơn tương tự như onBeginEdit. Những gì tôi cần là onEditComplete. – l46kok

2

Tại sao bạn không sử dụng sự kiện "làm mờ"?

http://www.kendoui.com/forums/ui/window/possible-to-close-window-when-it-loses-focus-.aspx

$("#window").blur(function(){ 
     if ($(document.activeElement).closest(".k-window").length == 0) { 
     $("#window").data("kendoWindow").close(); 
     } 
    }); 

http://api.jquery.com/blur/

+0

Sự kiện này có hoạt động cho lưới với chế độ chỉnh sửa không? – l46kok

+0

Từ những gì tôi biết không có sự kiện nào như "onEditComplete". nhưng bạn có thể lấy phần tử bằng bộ chọn css và thiết lập chức năng làm mờ. Bảng này: ".k-grid-content>> tbody> tr> td" sẽ là bộ chọn css cho http://demos.kendoui.com/web/grid/editing-custom.html – user23031988