Я работаю с ExtJS 4.2.1ExtJS 4.2.1, исчезновение дерева ...
У меня есть кнопка для создания панели.
Эта панель содержит мою панель дерева, пять флажков ниже и, наконец, одну действительную кнопку (чтобы закрыть панель дерева и подтвердить тот факт, что мы проверили некоторые узлы) и одну кнопку отмены (только для того, чтобы нарисовать древовидную панель).
Я могу сделать свою панель открытой, и она отлично работает. Но если я нажму на мою отмену или мою действительную кнопку, панель скроется (ok), и в следующий раз, когда я попытаюсь показать ее, она больше не содержит мою деревенскую панель, только пять флажков и две кнопки (внимание, два панели разные, панель содержит мою панель).
Я не понимаю, потому что нет причин для его исчезновения. Когда я проверяю дерево с помощью console.log()
, я вижу, проходя мимо treepanel.store.tree.root
, что моя древесная пачка все еще существует и правильно заполнена. Когда я проходил через treepanel.view.all
, я вижу, что на моем представлении присутствуют правильные элементы. Но когда я проверяю treepanel.body.dom
с хром-отладкой, я не вижу, где находится элемент (обычный, когда вы проходите через dom с мышью при отладке хром, вы можете увидеть соответствующую часть страницы по цвету).
Вот заинтересованная часть моего кода:
var button = Ext.get('ProductSelectionButton');
var treeSelector = createTree('stAddAction.do?action=product_tree_selector', 550, 490, '', 'lbl_st_tree_selection_empty', true, 'productlist');
button.on('click', function(){
treeSelector.store.proxy.url = 'stAddAction.do?action=product_tree_selector';
treeSelector.store.reload();
var productPanel = Ext.create('Ext.FormPanel',{
fieldDefaults:{
labelWidth: 75 // label settings here cascade unless overridden
},
frame:true,
title: document.getElementById('applicability').innerHTML + ' - ' + document.getElementById('lbl_st_product_tree_win').innerHTML,
style:'padding: 5px 5px 0; margin-top: 0;',
width: 550,
items: [treeSelector,
{
xtype: 'checkboxgroup',
items: [
{boxLabel: document.getElementById('lbl_status_deleted').innerHTML, name: 'status_2', checked: false, ctCls:'check-status-2',
listeners: {
change: function(newValue, oldValue, eOpts){
if(newValue.checked){
// To show items with status 2 which is Deleted status
Ext.Array.remove(statusToHide, "2");
ProductList.showIdsStatus(2);
}
else{
// To hide items with status 2 which is Deleted status
Ext.Array.push(statusToHide, "2");
ProductList.hideIdsStatus(2);
}
}
},
... four others checkboxes
}],
buttons: [{
icon : 'img/st_little_valid.png',
style:'width:20px!important;',
handler: function(){
var data = '',
selNodes = treeSelector.getCheckedNodes(treeSelector.getRootNode());
precedentlyCheckedNodes = selNodes;
xhr = getXhr();
xhr.onreadystatechange = function(){
if (xhr.readyState == 4 && xhr.status == 200) {
var myLoad = eval(myDataGrid);
productgrid.store.loadData(myLoad);
productgrid.getView().refresh();
win.hide();
enableSave();
}
}
var params = "action=set_iceproduct&datatoadd=" + data + "&datatoremove=" + strUnchecked;
xhr.open("POST", "stAddAction.do", true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.setRequestHeader('Content-length', params.length);
xhr.send(params);
}
},
{
icon : 'img/st_little_cancel.png',
handler: function(){
/* restore all nodes how they were before (checked or unchecked) */
treeSelector.verifyCheckedNodes(precedentlyCheckedNodes);
win.hide();
/* Only expand the first level */
treeSelector.collapseAll();
treeSelector.getRootNode().expand();
}
}]
});
Я не знаю, если это на самом деле довольно четко ... Во всяком случае, любая идея может быть приветствуется! Как эта деревня исчезнет с моей панели и все еще существует!
Спасибо
Это позволит убедиться, что панель создается только в первый раз нажата кнопка, и в зависимости от того, как остальной части вашего кода структуры должна оставаться в окне, когда вы показываете Это. – Reimius
Он отлично работает, спасибо Реймиус. И это также решило еще одну проблему :) – Poney