ExtJs TreePanel 動態載入
阿新 • • 發佈:2019-01-10
<span style="white-space:pre"> </span>今天在做ExtJs 做動態載入的時候,使用刪除第一次可以正確執行,當使用編輯、或新增後,更新的資料一直出不來
這是修改之前的程式碼:
<pre name="code" class="javascript">//新增點組 var addPointGroup = function(groupName) { Ext.Ajax.request( { url : pg_servlet + '_addFavoriteGroup?name=' + encodeURI(groupName), method : 'GET', success : function(response) { Ext.Msg.alert('提示', '新增點組成功!');
<pre name="code" class="javascript"><span style="white-space:pre"> </span>loadPointGroup();
}, failure : function(response){Ext.Msg.alert('提示', '新增點組失敗!' + response.responseText);}});};//編輯點組var editPointGroup = function(groupName,menuedGroupID){Ext.Ajax.request({url : pg_servlet + '_renameFavoriteGroup?name='
+ groupName+ '&groupID=' + menuedGroupID, method : 'GET',success : function(response){Ext.Msg.alert('提示', '修改成功!');
}, failure : function(response){Ext.Msg.alert('提示', '修改失敗!' + response.responseText);}});};//刪除點組var deletePointGroup = function(groupId){Ext.Ajax.request({url : pg_servlet + '_removeFavoriteGroup?id=' + groupId,method : 'GET', success : function(response){Ext.Msg.alert('提示', '刪除成功!');<pre name="code" class="javascript"><span style="white-space:pre"> </span>loadPointGroup();
}, failure : function(response){Ext.Msg.alert('提示', '刪除失敗!' + response.responseText);}});}<span style="white-space:pre"> </span>loadPointGroup();
使用這個東西我除錯了半天,結果一直都出不來,後來發現一直都沒調到重新載入的方法,樹節點沒有變化
//獲取點組
var loadPointGroup = function()
{
var tree = Ext.getCmp("tree");
var node = tree.getSelectionModel().getSelectedNode();
if (node == null)
{
tree.getRootNode().reload();
} else
{
var path = node.getPath('id');
tree.getLoader().load(tree.getRootNode(), function(treeNode)
{
tree.expandPath(path, 'id', function(bSucess,oLastNode)
{
tree.getSelectionModel().select(oLastNode);
});
}, this);
}
};
修改之後的程式碼變成這個樣子:
<pre name="code" class="javascript">//新增點組
var addPointGroup = function(groupName)
{
Ext.Ajax.request(
{
url : pg_servlet + '_addFavoriteGroup?name=' + encodeURI(groupName),
method : 'GET', success : function(response)
{
loadPointGroup();
Ext.Msg.alert('提示', '新增點組成功!');
}, failure : function(response)
{
Ext.Msg.alert('提示', '新增點組失敗!' + response.responseText);
}
});
};
//編輯點組
var editPointGroup = function(groupName,menuedGroupID)
{
Ext.Ajax.request(
{
url : pg_servlet + '_renameFavoriteGroup?name=' + groupName
+ '&groupID=' + menuedGroupID, method : 'GET',
success : function(response)
{
loadPointGroup();
Ext.Msg.alert('提示', '修改成功!');
}, failure : function(response)
{
Ext.Msg.alert('提示', '修改失敗!' + response.responseText);
}
});
};
//刪除點組
var deletePointGroup = function(groupId)
{
Ext.Ajax.request(
{
url : pg_servlet + '_removeFavoriteGroup?id=' + groupId,
method : 'GET', success : function(response)
{
loadPointGroup();
Ext.Msg.alert('提示', '刪除成功!');
}, failure : function(response)
{
Ext.Msg.alert('提示', '刪除失敗!' + response.responseText);
}
});
}
實際上在功能方面沒有任何變化,只是把<span style="font-family: Arial, Helvetica, sans-serif;">loadPointGroup方法放在alert之前呼叫,這樣能保證,</span><span style="font-family: Arial, Helvetica, sans-serif;">loadPointGroup方法不受alert方法的影響。至於為什麼這樣做,我認為這應該和extJs的非同步操作有關。</span>