flex tree 延迟加载的问题

与龙共舞 发布于 2011/01/09 17:47
阅读 1K+
收藏 1

之前不是用的动态加载,而是一次性全部加载出来。当数据量大的时候是很慢的。所以修改成层级加载。但是遇到了一个问题。且听我一一道来:

java代码,构造xml

 

//延时加载区划
	@Override
	public String findDistrictsByParentId(Long districtId)
			throws ServiceException, SQLException {
		String endNode = new String("");
		StringBuffer strXML = new StringBuffer();
		List subDistricts = districtDAO.findDistrctByParentId(districtId);
		District district;
		for(int i = 0 ; i < subDistricts.size() ; i ++){
			district = subDistricts.get(i);
			strXML.append(strXMLAppendAddIsLoad(district));
			List districts = districtDAO.findDistrctByParentId(district.getId());
			if(districts != null && districts.size() > 0){//有子节点给添加一个空的
				strXML.append("");
			}
			strXML.append(endNode);
		}
		System.out.println(strXML.toString());
		return strXML.toString();
	}

 

as代码:

 

		
//节点展开时进行触发
			protected function districtInfo_itemOpenHandler(event:TreeEvent):void
			{
				if(event.type == TreeEvent.ITEM_OPEN){
					var e:TreeEvent = TreeEvent(event);
					currentItem = XML(e.item);
					if(currentItem.@isLoad == "false"){
						districtProxy.findDistrictsByParentId(currentItem.@id).addResultListener(districtInfo_itemOpeningHandler_result);
					}
				}
			}
			[Embed("net/greatsoft/chss/images/tree/LC_Folder_Md.png")]
			public var icon1:Class; 
			public function districtInfo_itemOpeningHandler_result(event:ResultEvent):void
			{
				var subTreeData:XMLList = new XMLList(event.message.body.toString());
				districtInfo.dataDescriptor.removeChildAt(currentItem,currentItem.children()[0],currentItem.childIndex(),districtInfo.dataProvider);
				//currentItem.appendChild(subTreeData);//这两种方法都可以,但是下面那种速度快很多
				currentItem.node += subTreeData;
				currentItem.@isLoad = "true";
			}

	

 

 

效果图:

 

现在的问题是:当某个区划下面有子节点的时候怎么让他显示一个小三角的图标,(现在实现的是如果有子节点,给添加一个空的node。但是这样的话,前台就会显示这个空的node。),有没有一种方法,可以动态的改变前面的图标。或者可以把前面的那个空node移出掉也行。

 

PS一下:1、在chrome下发帖。我上传一张图片,明明点的是插入图片。不知为啥变成发布帖子的效果了

           2、我点击编辑,树下面的代码 怎么会没了呢

加载中
0
0
与龙共舞
与龙共舞
现在是有两种解决方案:
1、当节点有下级时、给他添加一个空节点。这样在前台就会显示为 这样,然后当你点击小三角的时候 ,把添加的空节点remove掉。
2、后台增加一个属性,判断是否有子节点(这肯定可以实现)。然后前台根据返回的数据动态的添加前面的图标。(不知道行不行的通,据说是一定要有数据才会显示 )
0
与龙共舞
与龙共舞

神马都是浮云,还得靠自己

返回顶部
顶部