2013-03-25 47 views
13

Khi gọi destroy() trong lưới KendoUI và sau đó tạo lại bảng trên DataSource mới: tại sao các cột trong bảng cũ vẫn tồn tại?Phá hủy Kendogrid() và tạo lại bảng trên nguồn dữ liệu mới, tại sao các cột trong bảng cũ vẫn tồn tại?

Phần tử duy nhất ở đây giữ nguyên giá trị là phần tử. Làm thế nào để tôi nói lưới để đọc các cột nguồn dữ liệu mới (nó đọc mọi thứ khác đúng).

(nếu tôi có 2 yếu tố khác nhau, cả hai đều cư đúng nhưng tôi chứ không phải chỉ cần giữ 1 phần tử và thay thế các yếu tố bảng bằng cách phá hủy và reinit)

Trả lời

28

lẽ Hầu hết đây là bởi vì bạn không xóa nội dung bên trong Thùng lưới. ví dụ.

$('#gridName').data().kendoGrid.destroy(); 
$('#gridName').empty(); 

hoặc cú pháp ngắn

$('#gridName').kendoGrid('destroy').empty(); 

cách khác Grid sẽ đưa vào tài khoản html cũ những gì còn lại - đừng quên rằng lưới có thể được khởi tạo từ bảng như here.

+1

Tôi kết thúc với một lỗi thời gian chạy Javascript: Không thể nhận thuộc tính 'kendoGrid' của tham chiếu không xác định hoặc null. Khi tôi cố gắng thực hiện javascript được đề cập ở trên. – Jeremy

1

Tôi đang làm việc trong khung công tác góc và dường như không thể tái tạo lưới Kendo với cột dữ liệu mới và cột mới. Không có gì hoạt động trên init lưới thứ 2. Tôi đã thử:

if (vm.mainHierGrid != null) { 
      //vm.mainHierGrid.data().kendoGrid.destroy(); 
      $('#mainGrid').data().kendoGrid.destroy(); 
      //$('#mainGrid').empty(); 
      vm.mainHierGrid.destroy(); 
     } 
+2

Tôi đã có cùng một vấn đề, tôi đã kết thúc bằng cách sử dụng lưới trong jQuery nhúng trong một chỉ thị góc – ps0604

1

Chỉ muốn làm rõ về các bit cuối cùng của câu trả lời Peter Subev vì nó giúp tôi:

"do not forget that the Grid could be initialized from table like here "

này chỉ đang nói rằng trong HTML của bạn, bạn sử dụng một thẻ <table> thay so với thẻ <div>. Sử dụng thẻ <table> tách dữ liệu bảng Lưới khỏi cột Lưới, vì vậy khi bạn thực hiện $ ('# gridName'). KendoGrid ('destroy'). Empty() nó chỉ phá hủy/làm trống dữ liệu bảng và không phải là thông tin cột .

Chuyển thẻ HTML <table> thành thẻ <div> để nhận kết quả mong muốn.