87,997
社区成员




var root = new Ext.tree.AsyncTreeNode( {
text : root_deptname,
expanded : true,
id : root_deptid
});
var deptTree = new Ext.tree.TreePanel( {
loader : new Ext.tree.TreeLoader( {
baseAttrs : {},
dataUrl : 'stockssalesrecord.ered?reqCode=departmentTreeInit'
}),
root : root,
autoScroll : true,
animate : false,
useArrows : false,
border : false
});
// 监听下拉树的节点单击事件
deptTree.on('click', function(node) {
comboxWithTree.setValue(node.text);
Ext.getCmp("id_deptid").setValue(node.id);
comboxWithTree.collapse();
});
var comboxWithTree = new Ext.form.ComboBox(
{
id : 'id_deptname1',
hiddenname : 'deptid',
store : new Ext.data.SimpleStore({
fields : [],
data : [ [] ]
}),
editable : false,
value : ' ',
emptyText : '请选择...',
fieldLabel : '选择部门',
anchor : '100%',
mode : 'local',
triggerAction : 'all',
// labelStyle : micolor,
maxHeight : 390,
// 下拉框的显示模板,addDeptTreeDiv作为显示下拉树的容器
tpl : "<tpl for='.'><div style='height:390px'><div id='deptTreeDiv'></div></div></tpl>",
allowBlank : false,
onSelect : Ext.emptyFn
});
comboxWithTree.on('expand', function() {
// 将UI树挂到treeDiv容器
deptTree.render('deptTreeDiv');
deptTree.root.expand(); //只是第一次下拉会加载数据
// deptTree.root.reload(); // 每次下拉都会加载数据
});
点击事件在里面。
this.contextTree = new Ext.tree.TreePanel( {
autoScroll : true,
border : false,
width : 200,
dataUrl : 'viewClientTreeData.action',
root : {
text : 'Client',
leaf : false
},
listeners : {
scope: this,
click : function(node) {
var jsonObj = this.treeNodeDataConfig(node.attributes);//对要传输的数据进行了重新处理,将要显示在Grid里的数据重新组装成JS Object,用
Ext.util.JSON.decode(jsonObj)方法转化(如果数据结构报错就用,不报错可以不用);
// 处理后的数据结构 var jsonObj = {"client_name":"ckk","email":'ckk_abc@sina.com',"age":12,"website":"www.ckk.com","level":1};
if (node.attributes.leaf != false) {
Ext.getCmp('_context_form_pane').add(new javascript.main.editGrid(jsonObj).show());
}
}
},
没有直接用GridPanel来写,以下是一段DataView组件代码,同样只供参考,树点击事件传过来的对象就是 data,如果硬是要一个GridPanel的,你继续追问,我待会写个。
javascript.main.editGrid = function(data){
this.store = new Ext.data.JsonStore({
fields: [
{name: 'client_name'},
{name: 'age'},
{name: 'email'},
{name: 'level'},
{name: 'website'}
],
data: data
})
this.tpl = new Ext.XTemplate(
'<table>',
'<tr >',
'<td class="client-treetpl-tdText">姓名:</td>',
'<td class="client-treetpl-tdValue">{client_name}</td>',
'<td class="client-treetpl-tdText" style="margin-left:5%;">年龄:</td>',
'<td class="client-treetpl-tdValue">{age}</td>'
'</table>')
javascript.main.editGrid.superclass.constructor.call(this,{
title:data.client_name+'_'+data.c_id,
width:600,
closable:true,
height:300,
tpl:this.tpl,
id:'_'+data.c_id,
listeners:{
scope:this,
afterrender:function(){
//alert(Ext.util.JSON.encode(data))
this.tpl.append(this.getEl(),data);
}
}
})
}
Ext.extend(javascript.main.editGrid,Ext.DataView,{})