extJS-动态改变baseParams

项目中遇到一个问题:双击导航栏树节点,根据该树节点的属性ID在开班计划列表界面上查询。见下图:


extJS-动态改变baseParams_第1张图片
 

 

 

1.难点:怎样实现基础参数的动态赋值?

 

1.1逻辑分析

初次加载页面时,没有节点被选中,查询store的baseParams应该不赋值。

有节点被选中时,查询store的baseParams应该被赋予相应的值。

 

2.解决思路

初次加载页面时,没有节点被选中,查询store的baseParams赋值为0,查询不到任何结果。

有节点被选中时,双击树节点时,改变查询store的baseParams为应该被赋予相应的值。

 

3.代码

var _treeItem = new Ext.tree.TreePanel({
		
		title : '导航栏',
		region : 'west',
		split : true,
		border : true,
		bodyStyle: 'background-color:#FFFFFF',
		collapsible : true,
		autoScroll : true,
		width : 180,
		minSize : 180,
		maxSize : 280,
		enableDD : true,
		
		el:"_treeItemDiv",
		id:"_treeItem",
		loader : new Ext.tree.TreeLoader({dataUrl :'itemData.jsp'}),
		
		listeners:{
			'dblclick':function(node,e){
				var subjectID = node.attributes.id;//科目ID
				alert("科目ID = "+ subjectID);
				
				_storeJwClassInit.on('beforeload',function(){
				      Ext.apply(
				      this.baseParams,
				      {
				           	subjectID:subjectID
				      });
				});
				
				_storeJwClassInit.removeAll();
				_storeJwClassInit.load({params:{start:0,limit:20,subjectID:node.attributes.id}});
			},
			
        	"contextmenu":function(node,e){
            	
            	if(node.attributes.id == "0")
            	{
            		var nodemenu=new Ext.menu.Menu({
                  
            		items:[
            			{
                        	text:"添加项目",
        					iconCls:'icon-table-add',
       						handler:function(){
         			 			
       							_winBaseItemOpr.setTitle("项目管理-添加");
       							_winBaseItemOpr.show();
       							
       							_panelBaseItemOpr.getForm().reset();
								
       							Ext.getCmp("iStudyBaseItemSuperiorItemId").setValue(node.attributes.id);
       							Ext.getCmp("iStudyBaseItemShowIndex").setValue(node.childNodes.length+1);
              				}
          				}
                        ]
        			});
        		
        			nodemenu.showAt(e.getPoint());
            	}
            	else
            	{
            		var nodemenu=new Ext.menu.Menu({
                  
            		items:[
            			{
                        	text:"删除项目",
        					iconCls:'icon-minus',
       						handler:function(){
         			 			
       							
              				}
          				},{
                        	text:"修改项目",
        					iconCls:'icon-table-edit',
       						handler:function(){
         			 			
       							_winBaseItemOpr.setTitle("项目管理-浏览");
       							_winBaseItemOpr.show();
       							
       							_panelBaseItemOpr.getForm().reset();
       							
       							Ext.getCmp("iStudyBaseItemItemId").setValue(node.attributes.id);
       							Ext.getCmp("iStudyBaseItemItemName").setValue(node.attributes.text);
       							Ext.getCmp("iStudyBaseItemSuperiorItemId").setValue(node.attributes.superiorItemId);
       							Ext.getCmp("iStudyBaseItemShowIndex").setValue(node.attributes.showIndex);
       							Ext.getCmp("iStudyBaseItemInf").setValue(node.attributes.inf);
              				}
          				}]
        			});
        		
        		nodemenu.showAt(e.getPoint());
        	}
    	}
	}
});

	var _rootItem = new Ext.tree.AsyncTreeNode({text:"教育在线",id:"0"});
 	
	_treeItem.setRootNode(_rootItem);
	
	var _panelOrg = new Ext.form.FormPanel({
    	collapsible:true,
    	frame:true,
    	width:pageWidth,
    	height:pageHeight,
    	items:[_treeItem],
    	autoScroll:true
	});

	_panelOrg.render("_panelItemDiv");
	_rootItem.reload();	

  

 

 

//初次加载时
 _storeJwClassInit.load({
	params:
		{
			start:0,
			limit:20
		}
});
	
	
_storeJwClassInit.on('beforeload',function(){
	Ext.apply(
		this.baseParams,
	      {
	           	subjectID:0
	      });
	});

 

你可能感兴趣的:(web前端)