私はExtJS 4.2.1で作業しています
パネルを表示させるボタンがあります。
このパネルには、私のツリーパネル、その下の 5 つのチェックボックス、最後に 1 つの有効なボタン (ツリーパネルを閉じて、いくつかのノードをチェックしたという事実を有効にするため) と 1 つのキャンセル ボタン (ツリーパネルを作成するためだけ) が含まれています。
パネルを表示させることができ、正常に動作します。しかし、キャンセルまたは有効なボタンをクリックすると、パネルが非表示になり (OK)、次に表示しようとすると、ツリーパネルが含まれなくなり、5 つのチェックボックスと 2 つのボタン (注意、2 つのパネルが異なる場合、パネルには私のツリーパネルが含まれています)。
消える理由がないのでわかりません。ツリーパネルを確認すると、ツリーパネルがまだ存在し、適切に埋められていること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();
}
}]
});
それが本当に明確かどうかはわかりません...とにかく、どんなアイデアでも歓迎できます! このツリーパネルがパネルから消えて、まだ存在しているなんて!
ありがとうございました