flex端
一,首先引入 trees xmlns:trees="http://code.google.com/p/flexlib/" 二 定义变量 private var reslutList:ArrayList=new ArrayList(); private var timer:Timer = new Timer(300,1); [Bindable] private var data_list:Array = null; 三、定义方法: //定时器 protected function onTimer(event:TimerEvent):void{ openItem(); } //展开树 protected function openItem():void { for(var i:int=0; i<data_list.length; i++) { if(!data_list[i].leaf)//如果还有下一级 { detail_tree.openItemAt(i); } } } /** * 取出所有节点的数据 * */ private function getListByGrid(list:Array):void{ for(var i:int=0;i<list.length;i++){ var o:Object=list[i]; if(o.hasOwnProperty("leaf")){ reslutList.addItem(o); }else{ getListByGrid(o.children); } } } //加载数据 protected function load_grid(year:String):void { // TODO Auto-generated method stub var param:URLVariables = new URLVariables(); param.orgCd = HttpUtil.loginOrgCd; param.businessYear =year;// this.year; HttpUtil.doPost("bfProjectBudgetAction!getBfProjectBudget.do", param, function(message:Object):void{ if(message.data.list!=null){ detail_tree.dataProvider = message.data.tree; data_list=message.data.list; timer.start(); } }); } //保存方法 protected function saveBtn_clickHandler(event:MouseEvent):void { reslutList=new ArrayList(); var list:ArrayCollection=detail_tree.dataProvider as ArrayCollection; getListByGrid(list.toArray()); var param:URLVariables = new URLVariables(); var json:String=JSON.encode(reslutList.toArray()); param.json=json; HttpUtil.doPost("bfProjectBudgetAction!updateBfProjectBudgetSubsidyDemo.do",param,function(obj:Object):void{ if(obj.data.error){ Message.showError("保持失败!"); }else{ Message.showSuccess("保存成功!"); } }); } 四、定义表格: <trees:TreeGrid headerBackgroundSkin="skin.grid.MxGridHeaderSkin" borderColor ="#C8CCCE" id="detail_tree" showRoot="false" editable="true" width="100%" height="100%" sortableColumns="false" disclosureClosedIcon="@Embed(source='/images/treegrid/arrow_down.png')" disclosureOpenIcon="@Embed(source='/images/treegrid/arrow_down.png')" folderOpenIcon="@Embed(source='/images/treegrid/arrow_down.png')" folderClosedIcon="@Embed(source='/images/treegrid/arrow_down.png')" defaultLeafIcon="@Embed(source='/images/treegrid/arrow_down.png')" > <trees:columns> <trees:TreeGridColumn id="projectTypeName" headerText="项目类型" dataField="projectTypeName" editable="false" textAlign="left"/> <mx:DataGridColumn id="gcl" headerText="计划工程量" dataField="projectQty" textAlign="center" editable="false" /> <mx:DataGridColumn id="unitName" headerText="单位" dataField="unitName" textAlign="center" editable="false"/> <mx:DataGridColumn headerText="* 国家补贴(元)" dataField="countrySubsidy" textAlign="center" editable="true" > <mx:itemEditor> <fx:Component> <mx:TextInput restrict="0-9." visible="{data.leaf}" editable="{data.leaf}" width="100%" height="100%"/> </fx:Component> </mx:itemEditor> </mx:DataGridColumn> <mx:DataGridColumn headerText="budgetId" dataField="budgetId" visible="false"/> </trees:columns> </trees:TreeGrid>
java端
一、取数据方法 newList.add(0, new SMap("projectTypeCd", "0", "projectTypeName", "项目类型", "projectParentId", null)); Map tree = TreeUtil.getTree(newList, "0", "projectTypeCd", "projectParentId"); newList.remove(0); Map result = new HashMap(); result.put("tree", tree); result.put("list", newList); this.output(result) ****取数据时一定要排序,因为这个问题今天查了很久才查出来,这种问题真的很要命。。 二 保存数据 Map outPut=new HashMap(); String json = getReq().getParameter("json"); List list = (List) JSON.parseArray(json, Map.class); try{ bfProjectBudgetService.updateBfProjectBudgetFlagDemo(shType,list); outPut.put("error", false); }catch(Exception e){ outPut.put("error", true); outPut.put("errorString", "保存失败"); } this.output(outPut);
TreeUtil需要引进pipi-framework.jar