2012-10-04 14 views
16

Làm cách nào để kiểm tra xem một số Kendo Grid có thay đổi không? Tôi nghe nói rằng có một tài sản dirty, nhưng tôi không thể tìm thấy nó.Làm cách nào để kiểm tra xem Lưới Kendo có thay đổi được thực hiện cho nó không?

+0

Nếu bạn đã đặt 'batch: true', có sự kiện' change' cho biết bất cứ khi nào có thay đổi xảy ra . –

+0

Chỉ cần lưu ý rằng bạn cần xác định lược đồ dataSource nếu bạn muốn hàm hasChanges() hoạt động (hoặc thuộc tính bẩn để xuất hiện trên một dataItem). – Misi

Trả lời

16

Hàng đã thêm sẽ có thuộc tính bẩn được đặt thành true và do đó sẽ được cập nhật hàng. Tuy nhiên, các hàng đã xóa được lưu trữ ở nơi khác (trong bộ sưu tập _destroyed). Chuyển hàm này vào nguồn dữ liệu của lưới của bạn để xem nó có thay đổi không.

function doesDataSourceHaveChanges(ds) 
{ 
    var dirty = false; 

    $.each(ds._data, function() 
    { 
     if (this.dirty == true) 
     { 
      dirty = true; 
     } 
    }); 

    if (ds._destroyed.length > 0) dirty = true; 

    return dirty; 
} 
8

Bạn có thể nhận được thông báo và sử dụng sự kiện thay đổi của nguồn dữ liệu sẽ xảy ra ở bất cứ nơi nào bạn đặt/sắp xếp/nhóm/lọc/tạo/đọc/cập nhật/xóa bản ghi.

Để đính kèm một handler để nó sử dụng:

$('#YourGrid').data().kendoGrid.dataSource.bind('change',function(e){ 
    //the event argument here will indicate what action just happned 
    console.log(e.action)// could be => "itemchange","add" or "remove" if you made any changes to the items 
}) 

Cập nhật: Nếu người dùng đã cập nhật bất kỳ của các mô hình .hasChanges() phương pháp của nguồn dữ liệu sẽ trở thành sự thật.

1

đáng để thử:

var hasDirtyRow = $.grep(gridDataSource.view(), function(e) { return e.dirty === true; }); 
if (hasDirtyRow.length != 0) 
{ 
    // grid has dirty row(s) 
} 
26

Bạn có thể sử dụng phương pháp 'hasChanges' trên DataSource cơ bản của lưới:

grid.dataSource.hasChanges(); 

$('#divGrid').data('kendoGrid').dataSource.hasChanges(); 
+0

điều này sẽ không xảy ra nếu bạn cập nhật giá trị thuộc tính. Phải không? – Gayan

3

grid.dataSource.hasChanges sẽ cho bạn biết nếu các nguồn dữ liệu đã thay đổi

      if (datasource.hasChanges() === true) { 
           alert('yes'); 
          } else { 
           alert('no'); 
          } 
Các vấn đề liên quan