- 浏览: 214004 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zlbdexiaohao:
怎么去掉默认的图标,folderClosedIcon=&quo ...
FLEX 构建完美的带有CheckBox三状态的Tree控件 -
zlbdexiaohao:
看不懂看不懂
FLEX 构建完美的带有CheckBox三状态的Tree控件 -
FYIHDG:
[list][*][list][*][*][list][*][ ...
ImageIO读jpg的时候出现exception:bandOffsets.length is wr -
被剥削的程序员:
你好我在引用你的comboxtree解决问题的时候,发现点击父 ...
ComboBoxTree -
527184687:
[flash=200,200][url][img][list] ...
ext treePanel 更换图标 总结
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" verticalAlign="middle" backgroundColor="white" creationComplete="init();"> <mx:Script> <![CDATA[ import hessian.service.FlexTestService; import mx.collections.ICollectionView; import mx.collections.XMLListCollection; import mx.controls.Alert; import mx.controls.Tree; import mx.events.ListEvent; import mx.rpc.events.ResultEvent; import mx.managers.PopUpManager; var noteId:String; //初始化从数据库中获得tree private function init():void { getTree(); } //监听tree item的click事件 private function tree_itemClick(evt:ListEvent):void { var item:Object = Tree(evt.currentTarget).selectedItem; if (tree.dataDescriptor.isBranch(item)) { tree.expandItem(item, !tree.isItemOpen(item), true); } } //tree的item有子节点的显示(子节点个数) private function tree_labelFunc(item:XML):String { var children:ICollectionView; var suffix:String = ""; if (tree.dataDescriptor.isBranch(item)) { children = tree.dataDescriptor.getChildren(item); suffix = " (" + children.length + ")"; } return item[tree.labelField] + suffix; } [Bindable] public var selectedNode:XML; //当tree发生change事件时的事件 public function treeChanged(event:Event):void { //将选中的节点转换成xml,赋予selectedNode,as为转换类型 selectedNode = Tree(event.target).selectedItem as XML; noteId = selectedNode.@sid; } //获得tree的方法 public function getTree():void { //构造service时指定回调方法名称 var service:FlexTestService = new FlexTestService(result); service.getTree(); } var returnString:String; var treeDate:XML //回调方法 public function result(data:Object):void { //java端返回的数据转化成String类型 returnString = data as String; //利用returnString构造一个xml,这里是关键了 treeDate = new XML(returnString); //把构造的xml文件绑定到tree上 tree.dataProvider = treeDate; } //删除某一节点 public function delNote():void { var service:FlexTestService = new FlexTestService(result); service.delNote(noteId); } //增加一个节点 public function addNote():void { var service:FlexTestService = new FlexTestService(result); service.addNote(noteId, nodeName.text); } //重命名节点 public function updateNote():void { var service:FlexTestService = new FlexTestService(result); service.updateNote(noteId, nodeName.text); } ]]> </mx:Script> <mx:Tree id="tree" showRoot="false" labelField="@label" labelFunction="tree_labelFunc" width="258" rowCount="6" itemClick="tree_itemClick(event);" x="301" y="205" height="208" change="treeChanged(event);"/> <mx:Button width="98" height="31" click="addNote();" x="374" y="440" label="添加" fontSize="16"/> <mx:Button width="98" height="31" click="updateNote();" x="374" y="482" label="修改" fontSize="16"/> <mx:Button width="98" height="31" click="delNote();" x="374" y="521" label="删除" fontSize="16"/> <mx:TextArea text="您选择的节点: {selectedNode.@label}" x="576" y="207" height="206" width="261"/> <mx:Text x="576" y="482" text="节点名称" fontSize="14" fontWeight="bold"/> <mx:TextInput id="nodeName" x="660" y="479" fontSize="16"/> </mx:Application>
package hessian.service { import mx.rpc.AsyncToken; import mx.controls.Alert; import hessian.client.HessianService; public class FlexTestService extends BaseService { private static var _userService : HessianService; //调用java端服务,调用的方法名要与java端服务接口名一致 protected static function getFlexTestService():HessianService { if (!_userService) { _userService = new HessianService("http://localhost/remoting/testService"); } return _userService; } public function FlexTestService(resultCallback:Function = null, faultCallback:Function = null) { super(resultCallback, faultCallback); } //获得tree数据 public function getTree():void { var token:AsyncToken = getFlexTestService().getTree.send(); token.addResponder(this); } //增加节点 public function addNote(sid:String, name:String):void { var token:AsyncToken = getFlexTestService().addNode.send(sid, name); token.addResponder(this); } //删除节点 public function delNote(sid:String):void { var token:AsyncToken = getFlexTestService().delNode.send(sid); token.addResponder(this); } //更新节点 public function updateNote(sid:String, name:String):void { var token:AsyncToken = getFlexTestService().updateNode.send(sid, name); token.addResponder(this); } } }
package net.shopin.api; import net.shopin.view.CatalogVO; import java.util.List; public interface TestService { /** * 获取所有节点 * @return */ String getTree(); /** * 增加节点 * @return */ String addNode(String sid,String name); /** * 删除节点 * @return */ String delNode(String sid); /** * 更新节点 * @return */ String updateNode(String sid,String name); }
package net.shopin.business; import com.shopin.modules.orm.hibernate.SimpleHibernateDao; import com.shopin.modules.utils.DozerMapper; import java.util.List; import java.util.ArrayList; import net.shopin.entity.Catalog; import net.shopin.entity.ProductList; import net.shopin.api.TestService; import net.shopin.view.CatalogVO; import org.springframework.transaction.annotation.Transactional; import org.springframework.stereotype.Component; import org.springframework.beans.factory.annotation.Autowired; import org.hibernate.SessionFactory; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.apache.commons.lang.ObjectUtils; @Transactional @Component("testService") public class TestServiceImpl implements TestService { private SimpleHibernateDao<Catalog, Long> testDao; @Autowired public void setSessionFactory(SessionFactory sessionFactory) { testDao = new SimpleHibernateDao<Catalog, Long>(sessionFactory, Catalog.class); } @Transactional(readOnly = true) public String getTree() { Catalog catalog = testDao.findByUnique("sid", Long.parseLong("1")); Criteria criteria = testDao.createCriteria(); criteria.add(Restrictions.eq("fatherNodeId", catalog)); List<Catalog> list = criteria.list(); String tree = listToxml(list); return tree; } private List<Catalog> getSonNode(String sid) { // System.out.println("--------getSonNode-----------"); String hql = "from Catalog as o where o.fatherNodeId = ? "; Catalog catalog = testDao.findByUnique("sid", Long.parseLong(sid)); List<Catalog> list = testDao.find(hql, catalog); return list; } //把list对象转化成XML private String listToxml(List flist) { ArrayList list = (ArrayList) flist; String treedata = "<treeRoot>\n"; treedata = CreateXmlNode(list, 1L, treedata); treedata = treedata + "</treeRoot>\n"; // System.out.println(treedata); return treedata; } /** * 通过递归解析list to Xml */ private String CreateXmlNode(List<Catalog> list, Long nodepid, String cratedata) { for (int a = 0; a < list.size(); a++) { Catalog fsort = (Catalog) list.get(a); if ((fsort.getFatherNodeId().getSid().toString()).equals(nodepid.toString())) { List<Catalog> lists = getSonNode(fsort.getSid().toString()); if (lists.size() > 0) { cratedata = cratedata + "<second label=\"" + fsort.getFatherNodeId().getNodeName() + "-" + fsort.getNodeName() + "\" sid=\"" + fsort.getSid() + "\">\n"; cratedata = CreateXmlNode(lists, fsort.getSid(), cratedata); cratedata = cratedata + "</second>\n"; } else { cratedata = cratedata + "<third label=\"" + fsort.getFatherNodeId().getNodeName() + "-" + fsort.getNodeName() + "\" sid=\"" + fsort.getSid() + "\"/>\n"; } } } return cratedata; } public String addNode(String sid, String name) { Catalog catalog = testDao.findByUnique("sid", Long.parseLong(sid)); Catalog newCatalog = new Catalog(); newCatalog.setNodeName(name); newCatalog.setFatherNodeId(catalog); testDao.save(newCatalog); String data = getTree(); return data; } public String delNode(String sid) { if (getSonNode(sid).size() > 0) { System.out.println("不可以删除此节点"); } else { String hql = "from Catalog as o where o.sid = ? "; Catalog catalog = testDao.findByUnique("sid", Long.parseLong(sid)); testDao.delete(catalog); } String data = getTree(); return data; } public String updateNode(String sid, String name) { String hql = "from Catalog as o where o.sid = ? "; Catalog catalog = testDao.findByUnique("sid", Long.parseLong(sid)); catalog.setNodeName(name); testDao.save(catalog); String data = getTree(); return data; } }
评论
3 楼
caojiapingaccp
2011-09-21
可以用吗
2 楼
emilyHong
2010-05-31
没有dao?
1 楼
lqw8668
2010-01-30
查xmllist,找来找去,找到我自己写的东西了………………
发表评论
-
浏览器前进后退按钮切换状态
2010-06-03 16:22 1556Flex browser manager能够让用户通过浏览器的 ... -
Flex3 Module 模块化 应用程序 开发
2010-05-26 15:40 1235模块(Modules) 模块(Module)是创建大型Fle ... -
OUTERDOCUMENT
2010-05-26 14:38 2488scope 也更改了。我的意思是, 从 <mx:Comp ... -
FLEX module的使用
2010-05-26 14:12 1032用FLEX来开发应用难免不 ... -
flex 加载 swf
2010-01-13 13:24 1239<?xml version="1.0&qu ... -
flex下载文件
2010-01-10 10:14 1306<?xml version="1.0&qu ... -
flex最全的表单验证
2010-01-05 14:50 1188<?xml version="1.0&qu ... -
mxml中动态生成组件
2009-12-28 17:09 1437客户那边的API 返回值如下 <list> ... -
TabNavigator
2009-12-20 23:21 962<?xml version="1.0&qu ... -
flex 打开新页面 窗口最大化
2009-12-14 22:12 2353var args:String = "toolb ... -
Flex中利用ContextMenu和ContextMenuItem类在DataGrid上创建一个自定义右键弹出菜单的例子
2009-12-10 22:49 3528<?xml version="1.0&qu ... -
flex datagrid分页排序失效
2009-12-09 22:04 1788分页改变了datagrid的数据源,数据源变了视图就跟着变了。 ... -
Flex 弹出窗口的例子
2009-12-09 00:44 1514TitleWindowApp.mxml <mx:Ap ... -
带CheckBox和级联操作的Tree
2009-12-08 23:28 2346CSDN上下载的,该Tree是采用XMLList 绑定数据的 ... -
FLEX 构建完美的带有CheckBox三状态的Tree控件
2009-12-08 23:02 7425CheckTree.as package ht.syste ... -
flex blazeds 异步加载tree
2009-12-06 14:48 1575<?xml version="1.0&qu ... -
flex 异步 tree
2009-12-06 14:33 2513例子一 <?xml version="1. ... -
FLEX数据类型和JAVA数据类型对应关系
2009-12-03 22:31 3040类型名 类型描述 Boolean 只有两个值:true 和fa ... -
BlaseDS+Spring 整合配置
2009-11-24 10:54 1259首先到spring网站下载两 ... -
flex blazeDs spring整合
2009-11-24 10:27 15221.新建一个工程Flex_Spring。Ap ...
相关推荐
### Flex中Tree的数据源是XML 在Flex应用开发过程中,我们常常需要用到树形结构(Tree)来展示分层数据。为了使数据呈现更加灵活且高效,通常会采用XML作为数据交换格式,这是因为XML具备良好的可读性和扩展性,...
本篇文章将聚焦于如何将ArrayCollection转换为XML数据源,并实现Flex Tree组件的新增、删除和修改功能。以下是详细的解释和步骤。 首先,ArrayCollection是Flex中常用的数据结构,它是一个动态数组,支持数据绑定和...
- **XML数据绑定**: Tree组件可以轻松地绑定到XML数据源。XML的层级结构非常适合表示树形结构,每个XML元素对应Tree的一个节点。 - **XMLList和XMLListCollection**: 将XML转换为XMLList或XMLListCollection,然后...
"Flex Tree XML"这个主题,就是关于如何使用XML数据源来填充和操作Flex中的Tree组件。在这个小例子中,我们将深入探讨如何将XML数据转换为可交互的树形结构。 一、XML数据源与Flex Tree组件 在Flex中,Tree组件...
首先,让我们从XML数据源开始。XML因其结构化的特性,非常适合用来表示层次数据。在Flex中,我们可以使用mx.collections.XMLListCollection将XML转换为可绑定的数据集合。例如: ```xml <xml> <item>Item 1.1 ...
"flex Tree xml"指的是使用XML数据来构建Flex中的Tree组件。Tree组件是Flex界面设计中的一种常见控件,它呈现了层次化的数据结构,通常用于显示文件系统、组织结构或者任何具有层级关系的数据。在本场景中,我们将...
通常使用mx.collections.ListCollectionView或mx.collections.ArrayList作为数据源。数据模型需要包含表示层级关系的字段,例如“label”(显示的文本),“children”(子节点数组)等。 2. **数据绑定**:将数据...
数据源通常是XML或ArrayCollection对象,包含树的所有层级信息。 4. **树节点查找**:使用循环或递归方法遍历数据源,比较每个节点的名称与用户输入的字符串是否匹配。匹配成功则记录该节点的索引或唯一标识。 5. ...
首先,让我们了解Flex中的树控件(Tree)和XML数据源。在Flex中,Tree控件用于显示层次结构的数据,它可以是多级别的,非常适合用来展示目录结构或组织结构等。而XML作为一种轻量级的数据交换格式,能够简洁地表示...
3. 数据结构:CheckboxTree的数据源通常是一个数据结构,如ArrayCollection或XML,包含了树形结构的数据。每个节点可能包含一个标识符、文本、子节点列表,以及一个表示是否选中的布尔值。 在提供的压缩包文件中,...
同时,如果数据源是XML或ArrayCollection,可以通过数据绑定将图标URL与节点数据关联起来。这样,当数据改变时,图标也会相应更新。 对于博文链接,虽然具体内容未提供,但我们可以推测这可能是一个关于如何在Flex...
综上所述,本示例通过XML数据源和样式定制,展示了如何在Flex中创建和自定义Tree组件,以实现一个动态的树形数据展示界面。通过合理的组件事件监听和数据绑定,开发者可以创建响应用户交互的丰富应用。
- `tree.dataProvider = results` 将XML数据绑定到Tree组件,使其显示在界面上。 - `for` 循环遍历所有的子节点,并通过 `attribute("label")` 和 `attribute("data")` 访问它们的属性值。 3. `initApp` 函数在...
首先,Tree组件的基础在于XML数据源。在Flex4中,我们可以使用ArrayCollection或XMLListCollection作为数据提供者,将XML结构转换为可操作的数据模型。在提供的源码中,你可能会看到一个XML文件,其中包含层次化的...
1. **数据源**:Tree组件的数据来源于一个数据提供者,它可以是ArrayCollection、XMLListCollection或其他实现了 IList 接口的对象。数据提供者中的每个项目代表Tree中的一个节点,每个节点可以有子节点。 2. **...
在ActionScript中,这可以通过改变数据项的selected属性来实现,同时可能还需要更新Tree的数据源,确保选中状态在数据和视图之间保持同步。 ```actionscript private function handleClick(event:Event):void { ...
在Flex 3中实现这个功能,我们可以利用Flex的Tree组件和CheckBox组件,结合XML数据源来构建这个自定义的控件。以下是一个详细步骤的概述: 1. **创建Tree组件**:首先,我们需要创建一个Tree组件,这是展示树状结构...
总之,`flex checkboxtree复选树形下拉框`是一个功能强大的交互组件,它涉及到Flex中的树形数据展示、自定义组件、事件处理和XML数据绑定等多个技术点。在`ReportListPage.mxml`中,开发者通过灵活地组合和定制这些...
在Flex中,Tree的数据源通常是XML或ArrayCollection。对于ArrayCollection,每个元素代表一个树节点,可以包含子节点数组和其他属性。在ComboBox中,我们需要确保当用户选择一个Tree节点时,ComboBox的selectedItem...
我们需要确保CheckBox的状态与Tree节点的数据模型(通常是Object或XML)中的某个属性绑定。这个属性可以表示节点是否被选中。当CheckBox状态改变时,更新这个属性,反之亦然。 4. **事件处理**: 添加事件监听器...