2013-07-22 35 views
5

Tôi đang sử dụng ExtJS 4.2.1 và có thiết lập khá đơn giản: cửa hàng dựa trên JSON và bảng điều khiển lưới đọc từ cửa hàng đó. Sự kiện nhấp của nút thêm sẽ gọi ra chức năng bên dưới.Chuyển đổi trình chỉnh sửa ô sau khi ghi theo chương trình được thêm vào lưới trong ExtJS

Mục tiêu của tôi là thêm hàng trống vào lưới và bắt đầu chỉnh sửa ngay lập tức bằng cách sử dụng plugin Ext.grid.plugin.CellEditing được bật trên bảng điều khiển.

var addNewRow = function() { 
    // start add logic 
    var row = { 
    'name': '', 
    'email': '', 
    'description': '' 
    }; 
    store.add(row); 

    // start auto-edit logic 
    var index = store.indexOf(row); // -1 
    var grid = Ext.ComponentQuery.query('gridpanel[itemId=upperPane]')[0]; 
    var plugin = grid.getPlugin('upperPaneEditor'); 
    plugin.startEdit(index, 0); 
}; 

Trong khi gỡ lỗi này, chỉ mục được đặt thành -1 và không hoạt động. Tôi đã thử nghiệm chức năng của plugin.startEdit() với (0, 0) để chỉnh sửa cột đầu tiên của hàng đầu tiên và nó hoạt động tốt. Tôi đã cố gắng di chuyển tự động chỉnh sửa logic để xử lý sự kiện khác nhau cố gắng để làm cho nó làm việc:

  • kiện add của cửa hàng bị sa thải sau khi add và phản ánh các chỉ số chính xác nhưng yếu tố này đã không có mặt nhưng trong gridpanel cho các plugin để lấy nó.
  • Sự kiện afterrender của gridpanel không kích hoạt sau khi thêm
  • Sự kiện add của gridpanel được kích hoạt nhưng chỉ sau khi nhấp đúp vào ô theo cách thủ công để chỉnh sửa sự kiện. Nó cũng đã kết thúc trong một vòng lặp với chính nó.

Tôi không chắc chắn về những điều cần thử tại thời điểm này.

Trả lời

1

row là đối tượng cấu hình mô hình của bạn, không phải là mẫu thể hiện, do đó store.indexOf trả về -1.

Hãy thử:

var inst = store.add(row)[0]; 
... 
var index = store.indexOf(inst); 
+0

Awesome, mà làm việc. Cảm ơn! – anjunatl

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