extjs非同期ロードツリー



var treepanel = new Ext.tree.TreePanel({
				title : '     ',
				padding : "10px",
				region : 'west',
				layout : 'fit',
				width : 200,
				split: true,
				autoScroll : true,
				rootVisible : true,
				tbar : [{
							text : "  ",
							handler : function() {
								window.location.reload();
							}
						}],
				loader : new Ext.tree.TreeLoader({
							autoLoad : true,
							url : "/zzc/zzc/bmzd!list.shtml",
							baseParams:{view_code:""},
							processResponse : function(response, node, callback) {
								var json = Ext.util.JSON.decode(response.responseText);
								try {
									var o = json.bmzds;
									node.beginUpdate();
									var l = this;
									Ext.each(o, function(item) {
											item.text = item.name;
											var n = l.createNode(item);
											if (n) {
												node.appendChild(n);
											}
									    
									});
									node.endUpdate();
									this.runCallback(callback,scope || node,[node]);
								} catch (e) {
									this.handleFailure(response);
								}
							},
							listeners : {
								beforeload : function(l, n, c) {
									
									if (n.attributes.id == "rootNode") {
										l.url = '/zzc/zzc/bmzd!list.shtml';
										l.baseParams = {
											view_code : "",
											needEnabled : false
										}
									} else {
										l.url = '/zzc/zzc/bmzd!list.shtml';
										l.baseParams = {
											view_code : n.attributes.view_code,
											needEnabled : false
										}
									}
									c.call();
								}
							}
						}),
				root : new Ext.tree.AsyncTreeNode({
							text : "    ",
							id : 'rootNode',
							expanded : true
						})

			});