flex tree的dataProvider问题
假设我有一个ArrayCollectionarr,里面存了三个UserInfo对象,每一个userInfo对象有username和permissions两个属性而perm...
假设我有一个ArrayCollection arr,里面存了三个UserInfo对象,每一个userInfo对象有username和permissions两个属性
而permissions又是一个ArrayCollection,里面存了个数不等的Permission对象,Permission对象有一个permissionName的属性
想把arr解析成一个tree,应该怎么做
tree的格式如下:
username1
|——permissionName1
|——permissionName2
username2
|——permissionName1
username3
|——permissionName1
|——permissionName2
回答得好有追加!!!! 展开
而permissions又是一个ArrayCollection,里面存了个数不等的Permission对象,Permission对象有一个permissionName的属性
想把arr解析成一个tree,应该怎么做
tree的格式如下:
username1
|——permissionName1
|——permissionName2
username2
|——permissionName1
username3
|——permissionName1
|——permissionName2
回答得好有追加!!!! 展开
展开全部
var arr:ArrayCollection=三个UserInfo对象
var permissions:ArrayCollection=很多Permission对象
public class UserInfo{
private id:String;
private username:String;
private permissions:ArrayCollection;//只写这三个属性其他没写
}
/*最终的数据源*/
var carSource:ArrayCollection=new ArrayCollection();
/*定义三个父节点*/
var carNode1:ArrayCollection=new ArrayCollection();
var carNode2:ArrayCollection=new ArrayCollection();
var carNode3:ArrayCollection=new ArrayCollection();
for(int i=0;i<arr.length();i++){
if(arr.getItem(i).某个属性=username1){//具体看情况这里判断是哪个父节点
carNode1.addItem(arr.getItem);
}
if(arr.getItem(i).某个属性=username3){//具体看情况这里判断是哪个父节点
carNode2.addItem(arr.getItem);
}
if(arr.getItem(i).某个属性=username3){//具体看情况这里判断是哪个父节点
carNode3.addItem(arr.getItem);
}
}
//准备父节点数据
var userinfo1:UserInfo=new UserInfo();
userinfo1.name="username1";
userinfo1.id="0";
userinfo1.children=carNode1;
var userinfo1:UserInfo=new UserInfo();
userinfo1.name="username2";
userinfo1.id="1";
userinfo1.children=carNode2;
var userinfo1:UserInfo=new UserInfo();
userinfo1.name="username3";
userinfo1.id="2";
userinfo1.children=carNode3;
//最终数据源
carSource.addItem(userinfo1);
carSource.addItem(userinfo2);
carSource.addItem(userinfo3);
//绑定
treeView.dataProvider=carSource
这段代码是纯手工编写,前段时间电脑出问题,没装Flex开发环境,可能里面的某些代码写的不是很好,还有循环里面的那三个if的条件你必须自己整理,判断出来这个子节点是属于哪个父节点,这个子父节点的关系,你必须在你的(ArrayCollection arr,里面存了三个UserInfo对象)中标示好,以便下面做判断,我这里基本也就写了下思路吧! 希望对你有帮助
var permissions:ArrayCollection=很多Permission对象
public class UserInfo{
private id:String;
private username:String;
private permissions:ArrayCollection;//只写这三个属性其他没写
}
/*最终的数据源*/
var carSource:ArrayCollection=new ArrayCollection();
/*定义三个父节点*/
var carNode1:ArrayCollection=new ArrayCollection();
var carNode2:ArrayCollection=new ArrayCollection();
var carNode3:ArrayCollection=new ArrayCollection();
for(int i=0;i<arr.length();i++){
if(arr.getItem(i).某个属性=username1){//具体看情况这里判断是哪个父节点
carNode1.addItem(arr.getItem);
}
if(arr.getItem(i).某个属性=username3){//具体看情况这里判断是哪个父节点
carNode2.addItem(arr.getItem);
}
if(arr.getItem(i).某个属性=username3){//具体看情况这里判断是哪个父节点
carNode3.addItem(arr.getItem);
}
}
//准备父节点数据
var userinfo1:UserInfo=new UserInfo();
userinfo1.name="username1";
userinfo1.id="0";
userinfo1.children=carNode1;
var userinfo1:UserInfo=new UserInfo();
userinfo1.name="username2";
userinfo1.id="1";
userinfo1.children=carNode2;
var userinfo1:UserInfo=new UserInfo();
userinfo1.name="username3";
userinfo1.id="2";
userinfo1.children=carNode3;
//最终数据源
carSource.addItem(userinfo1);
carSource.addItem(userinfo2);
carSource.addItem(userinfo3);
//绑定
treeView.dataProvider=carSource
这段代码是纯手工编写,前段时间电脑出问题,没装Flex开发环境,可能里面的某些代码写的不是很好,还有循环里面的那三个if的条件你必须自己整理,判断出来这个子节点是属于哪个父节点,这个子父节点的关系,你必须在你的(ArrayCollection arr,里面存了三个UserInfo对象)中标示好,以便下面做判断,我这里基本也就写了下思路吧! 希望对你有帮助
网易云信
2023-12-06 广告
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同...
点击进入详情页
本回答由网易云信提供
展开全部
循环一次arr,就能把tree用的数据整理好了啊。
只是每次循环arr的内部,还要循环一下permissions,因为它也是一个ArrayCollection 。
你这个数据的结构和最后要展现的树的结构其实挺清晰的,不复杂。。
有细节问题,你可以再联系我。
只是每次循环arr的内部,还要循环一下permissions,因为它也是一个ArrayCollection 。
你这个数据的结构和最后要展现的树的结构其实挺清晰的,不复杂。。
有细节问题,你可以再联系我。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你还是先在后台把数据解析成xml再传到前台来用吧、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询