Tôi đang cố truy xuất nút đã chọn, nếu có, của TreePanel khi người dùng nhấp vào nút. Làm thế nào để bạn lấy nút chọn trong một TreePanel? Cảm ơn.Làm cách nào để tìm nút đã chọn trong ExtJS TreePanel?
Trả lời
Điều bạn sẽ làm là tạo trình xử lý sự kiện. Mỗi đối tượng ExtJs có một số sự kiện được tự động liên kết với chúng. Bạn sẽ viết một trình xử lý sự kiện (một hàm) mà sau đó bạn có thể gán cho một trình nghe sự kiện. Vì vậy, trong trường hợp này, bạn có thể muốn gán một trình xử lý sự kiện cho sự kiện 'click' của thành phần TreePanel của bạn.
var tbPan = new Ext.tree.TreePanel({
itemId:'navTree',
autoScroll: true,
root: new Ext.tree.TreeNode({
id: 'root',
text: 'My Tree Root',
rootVisible: true
}),
listeners: {
click: {
fn:clickListener
}
}
});
clickListener = function (node,event){
// The node argument represents the node that
// was clicked on within your TreePanel
};
Nhưng, điều gì sẽ xảy ra nếu bạn muốn biết một nút đã được chọn? Tại thời điểm đó, bạn sẽ cần truy cập vào Model Selection của TreePanel. Bạn đã đề cập đến một thao tác nút. Hãy nói rằng bạn muốn áp dụng một chức năng để xử lý nhấp chuột của nút đó để có được những nút chọn:
var btn = new Ext.Button({
text: 'Get Value',
handler: function (thisBtn,event){
var node = Ext.fly('navTree').getSelectionModel().getSelectedNode();
}
});
Bạn đã sử dụng yếu tố hạng ruồi để có được một tài liệu tham khảo nhanh vào TreePanel bản thân, sau đó sử dụng phương pháp nội TreePanel của để nhận được đó là Mô hình lựa chọn. Sau đó, bạn sử dụng phương thức bên trong của Model Selection (trong trường hợp này là DefaultSelectionModel) để có được nút chọn.
Bạn sẽ tìm thấy nhiều thông tin trong Tài liệu Ext JS. API ứng dụng trực tuyến (và ngoại tuyến AIR) khá rộng rãi. Cẩm nang Ext Core cũng có thể cung cấp cho bạn rất nhiều thông tin chi tiết về phát triển ExtJS, ngay cả khi bạn không sử dụng Core trực tiếp.
var selectednode = tree.getSelectionModel().getSelectedNode();
//alert(selectednode);
if(selectednode!=tree.getRootNode())
selectednode.remove();
@Steve
Ext.fly('navTree').getSelectionModel().getSelectedNode();
không được đi làm, sử dụng
Ext.getCmp('navTree').getSelectionModel().getSelectedNode();
để thay thế.
Trong Ext JS 4 bạn có thể đặt một người biết lắng nghe trên bảng điều khiển cây như thế này:
listeners: {
itemclick: {
fn: function(view, record, item, index, event) {
//the record is the data node that was clicked
//the item is the html dom element in the tree that was clicked
//index is the index of the node relative to its parent
nodeId = record.data.id;
htmlId = item.id;
}
}
}
Điều này là tốt, vì ví dụ tôi tìm thấy không phản hồi nhấp chuột và mục cần thiết. Tôi đoán thời gian sự kiện đã được cập nhật. –
var myTree = Ext.getCmp('tree-panel');
var selectednode = myTree.selModel.selNode
Đối ExtJS 4 ...
Tôi đã thêm người nghe sau trong bảng điều khiển cây của tôi :
listeners:
{
itemclick: function(view, record, item, index, e)
{
selected_node = record;
}
}
trong đó select_node là biến toàn cục. Các chức năng như append và loại bỏ có thể được sử dụng với biến hồ sơ này ví dụ .:
selected_node.appendChild({text: 'New Node', leaf: true});
selected_node.remove();
Tôi đã tạo ra nút để Add Node và Delete Node mà sử dụng ở trên để thêm và loại bỏ các nút đến nút chọn. remove() sẽ xóa nút đã chọn cũng như tất cả các nút con!
Bạn cũng có thể nhận được nút đã chọn bất kỳ lúc nào bằng cách sử dụng (lựa chọn xảy ra bên trái cũng như nhấp chuột phải): var selected_node = Ext.getCmp ('tree_id'). GetSelectionModel(). GetSelection() [0 ];
Trong ExtJS4 bạn có thể sử dụng phương thức getLastSelected() trả về mục được chọn cuối cùng trong một cây.
Xem ExtJS: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.selection.Model-method-getLastSelected
Một ví dụ có thể trông như thế này:
var tree = this.up("window").down("supportedcontrolcircuitmodelselector");
var selectedCircuit = tree.getSelectionModel().getLastSelected()
var nodesSelected = Ext.getCmp('foldersTree').getSelectionModel().selected.items;
if(nodesSelected.length > 0)
{
var node = nodesSelected[0];
console.log(node.internalId);
}
này là dành cho ExtJS4 TreePanel
var tree = Ext.create('Ext.tree.Panel', {
store: store,
renderTo: 'tree_el',
height: 300,
width: 250,
title: 'ExtJS Tree PHP MySQL',
tbar : [{
text: 'get selected node',
handler: function() {
if (tree.getSelectionModel().hasSelection()) {
var selectedNode = tree.getSelectionModel().getSelection();
alert(selectedNode[0].data.text + ' was selected');
} else {
Ext.MessageBox.alert('No node selected!');
}
}
}]
});
Một số giải thích về đoạn mã này sẽ tốt đẹp. –
đơn giản ....
itemclick: function(view, record, item, index, e)
{
alert(record.data.text);
}
- 1. Extjs Treepanel: CSS để thay đổi các biểu tượng mặc định (nút và lá)
- 2. Làm thế nào để thêm một đứa trẻ vào một nút trong TreePanel?
- 3. Làm cách nào để tìm kiếm văn bản đã chọn?
- 4. Làm cách nào để nhận id của nút đã chọn trong jsTree?
- 5. Làm cách nào để căn giữa biểu tượng trong nút extjs?
- 6. Làm cách nào để đặt trạng thái đã chọn của nút hình ảnh bằng xml
- 7. Tôi làm cách nào để có được giá trị nút radio đã chọn?
- 8. ExtJS 4.1 Làm thế nào để chọn mục đầu tiên trong combo
- 9. Làm cách nào để tìm ra nút nào được nhấp?
- 10. Nút bật/tắt ExtJS
- 11. ExtJs TextField với nút nhỏ
- 12. Làm cách nào để chọn mô-đun nút?
- 13. ExtJS nút unpress
- 14. Làm cách nào để tìm giá trị datakey của GridView trên thuộc tính đã thay đổi chỉ mục đã chọn?
- 15. Làm thế nào để làm mới GridView trong Extjs?
- 16. Làm cách nào để thêm hàng trống vào lưới ExtJS?
- 17. Làm thế nào để bạn xóa một cây trong ExtJs?
- 18. Thêm nút vào lưới trong ExtJs
- 19. Làm cách nào để nhận được nhiều giá trị đã chọn từ hộp chọn trong JSP?
- 20. Làm cách nào để thiết lập chỉ mục phân đoạn đã chọn trong UISegmentedControl? (iPhone SDK)
- 21. Làm cách nào để lọc nhiều cột lưới extjs?
- 22. Đánh dấu/Chọn hàng lưới trong ExtJS
- 23. Chọn nút tiếp theo của nút đã chọn trong PHP DOM?
- 24. Làm cách nào để biết nút nào đã được nhấp vào trong biểu mẫu PHP?
- 25. cách phát hiện nhấp chuột vào nút tab đã chọn
- 26. Làm cách nào để xóa nhiều mục đã chọn trong ListBox?
- 27. Làm cách nào để mở khóa văn bản đã chọn trong Edittext Android?
- 28. Làm cách nào để kích hoạt nút hủy trong UISearchBar?
- 29. Nút radio "Đã chọn = đã chọn" không thay đổi khi tùy chọn thay đổi
- 30. lấy danh sách nút radio đã chọn trong xoay
Điều đó có hiệu quả, cảm ơn! –
Vui vì tôi có thể giúp –
Trong ExtJS 4+ không có phương thức 'getSelectedNode()' trong 'Ext.selection.Model', nhưng có' getSelection() '. –