树形tree组件详解
来源:互联网 发布:安装linux设置主机名 编辑:程序博客网 时间:2024/05/24 16:16
1.树形的拖拽
Ext.tree.viewDDDPlugin
alias:"plugin.treeviewdragdrop",
需要配置:
viewConfig:{
plugins:{
ptype:"treeviewdragdrop"
}
},
事件
listeners:{
drop:function(node,data,dropRec,dropPosition){
//放下之后触发
},
beforedrop:function(node,data,overModel,dropPostion,dropFunction,options){
//放下之前
}
}
代码配置:
viewConfig:{
plugins:{
ptype:"treeviewdragdrop",
appendOnly:true
},
listeners:{
beforedrop:function(node,data,overModel,dropPostion,dropFunction,options){
// if(overModel.get("leaf")){
// overModel.set("leaf",false);
// }
},
drop:function(node,data,overModel,dropPostion,options){
//ajax的操作把数据同步到后台数据库
alert("把"+data.records[0].get("text")+"移动到"+overModel.get("text"));
}
}
}
2.模拟拷贝和粘贴
(1)声明属性
config:{
copyNodes:""//声明一个属性,并且有对应的setget方法, 它充当的剪切板的作用
},
(2)事件实现:
"deptTreebutton[id=copy]":{
//复制功能
click:function(b,e){
vartree=b.ownerCt.ownerCt;
//得到数据集合
varnodes=tree.getChecked();
if(nodes.length>0){
//把数据放到剪切版中
tree.setCopyNodes(Ext.clone(nodes));
alert("你已经拷贝了"+nodes.length+"个节点");
//去掉选中状态
for(vari=0;i<nodes.length;i++){
nodes[i].data.checked=false;
//更新一下信息
nodes[i].updateInfo();
}
}else{
alert("请选择数据");
}
}
},
"deptTreebutton[id=paste]":{
click:function(b,e){
vartree=b.ownerCt.ownerCt;
varcheckednodes=tree.getChecked();
if(checkednodes.length==1){
//被追加孩子的节点
varnode=checkednodes[0];
//去前切版中取数据
varnodes=tree.getCopyNodes();
//需要做一下后台同步,伴随这id的改变等操作
//最好在剪切板中的数据呈现在页面中,把东西遍历显示出来
if(nodes.length>0){
for(vari=0;i<nodes.length;i++){
varn=nodes[i].data;
n["id"]=n["id"]+"1";
node.appendChild(n);
}
}
}else{
alert("剪切板中无数据或者没有选择要追加孩子的节点");
}
}
},
3.删除操作
在事件中实现
"deptTreebutton[id=delete]":{
click:function(b,e){
vartree=b.ownerCt.ownerCt;
varnodes=tree.getChecked();
if(nodes.length>0){
for(vari=0;i<nodes.length;i++){
nodes[i].remove();
}
}else{
alert("你没有选择要删除的数据");
}
}
}
4.多列数
声明一个model 在controller层中指定,并在stroe层中配置model,然后配置view层中的tree
//配置多列树
columns:[
//树形的模式,xtype指定
{
xtype:"treecolumn",
text:"text",
width:150,
dataIndex:"text"
},
//普通的模式
{
text:"info",
width:150,
dataIndex:"id"
}
],
5.单机树形根节点,子节点也被选中
"deptTree":{
checkchange:function(node,checked,options){
if(node.data.leaf==false){
if(checked){
//首先打开节点
node.expand();
//遍历孩子 如果孩子不是叶子,可以用findChild 和isLeaf两个方法来配合使用递归
node.eachChild(function(n){
n.data.checked=true;
n.updateInfo({checked:true});
});
}else{
node.expand();
//遍历孩子 如果孩子不是叶子,可以用findChild 和isLeaf两个方法来配合使用递归
node.eachChild(function(n){
n.data.checked=false;
n.updateInfo({checked:false});
});
}
}else{//单击叶子
if(!checked){
node.parentNode.data.checked=false;
node.parentNode.updateInfo({checked:false});
}
}
},
}
- 树形tree组件详解
- jQuery EasyUI详解-EasyUI树形控件tree
- vue.js树形组件详解,删除双击增加分支
- tree 递归 树形菜单!
- php 通用tree (树形)
- 树形控件(Tree Control)
- jQuery Tree 树形控件
- Tree Cutting (树形DP)
- pku1848 Tree 树形DP
- Apple Tree--树形DP
- 树形控件Tree Control
- Tree Cutting 树形dp
- BZOJ4987 Tree [树形DP]
- Apple Tree(树形DP)
- ExpandableListView 树形组件
- Extjs组件树形结构图
- 开发Vue树形组件
- vue树形组件
- 阻塞与非阻塞概念
- 网络搜索帮手
- 编写一个strlen函数(不用全局变量或局部变量)
- The content of the adapter has changed but ListView did not receive a notification
- 解决网站开发中ResultSet can not re-read row data for column问题
- 树形tree组件详解
- java.lang.IllegalStateException: get field slot from row 0 col -1 failed 异常错误
- 【2-SAT】POJ 3207
- 1395. Rounders
- Oracle 扫描类型
- C# Publisher/Subscriber Pattern, keyword event/delegate
- zoj 1372 ||poj 1287 Networking(最小生成树-Kruskal)
- C/C++中的日期和时间
- 移植Busybox到宿主机