dojo tree edit的使用[前端]
var store = new mydata.JsonRestStore({ target: "<%=ResolveUrl("~/uieditserver.ashx")%>" });
typestore = new mydata.JsonRestStore({
target: "<%=ResolveUrl("~/uieditserver.ashx") %>",
labelAttribute: "pagename"
});
treeModel = new dijit.tree.ForestStoreModel({
store: typestore,
deferItemLoadingUntilExpand: true,
rootLabel: "系统功能树",
query: { operation: 'pageList.FindTree' },
childrenAttrs: ["Details"]
});
var treeControl = new dijit.Tree({
id: "atreepowers",
model: treeModel,
autoExpand: true,
showRoot: true,
_createTreeNode: function (args) {
var tnode = new dijit.Tree._TreeNode(args);
tnode.labelNode.innerHTML = args.label;
if (args.item.root) {//如果是根
return tnode;
}
var cb = new dijit.form.CheckBox();
cb.placeAt(tnode.labelNode, "first");
dojo.connect(cb, "onChange", function () {
var treeNode = dijit.getEnclosingWidget(this.domNode.parentNode);
dojo.publish("/checkbox/clicked", [{
"checkbox": this,
"item": treeNode.item
}]);
});
return tnode;
}
});
dojo.subscribe("/checkbox/clicked", function (message) {
message.item.ischecked = message.checkbox.checked;
setpersiblings(message.checkbox.getParent());
});
function setpersiblings(selectNode) {
if (!selectNode) return;
//先子级,孙级
var checked = selectNode.item.ischecked;
var childrens = selectNode.getChildren();
for (var i = 0; i < childrens.length; i++) {
childrens[i].item.ischecked = checked;
dijit.getEnclosingWidget(childrens[i].labelNode.firstElementChild)
.set('checked', checked);
}
var iparentknow = 0;
//位置,往前获取数据,往后获取数据,同级
var getparentchildrens = selectNode.getParent();//.getChildren();
while (getparentchildrens && getparentchildrens.isTreeNode && !getparentchildrens.item.root) {
var getchildrens = getparentchildrens.getChildren();
for (var i = 0; i < getchildrens.length; i++) {
if (getchildrens[i].item.ischecked) {
iparentknow += 1;
}
}
if (iparentknow === getchildrens.length) {
getparentchildrens.item.ischecked = true;
dijit.getEnclosingWidget(getparentchildrens.labelNode.firstElementChild)
.set('checked', true);
}
else {
getparentchildrens.item.ischecked = false;
dijit.getEnclosingWidget(getparentchildrens.labelNode.firstElementChild)
.set('checked', false);
}
getparentchildrens = getparentchildrens.getParent();//.getChildren();
}
}
dojo tree edit的使用[前端]的更多相关文章
- Dojo Tree设置默认选中项并且获得它
先上用来生成Tree的JSON数据 [ { "id": "Root", "name": "资源目录" }, ...
- dojo Tree 添加、删除节点
var tree=this.tree; var store=tree.model.store; if(this.node){ console.log(this.node) var children=t ...
- Web前端工程师成长之路——知识汇总
一.何为Web前端工程师? 前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript ...
- 前端自动化测试工具doh学习总结(二)
一.robot简介 robot是dojo框架中用来进行前端自动化测试的工具,doh主要目的在于单元测试,而robot可以用来模仿用户操作来测试UI.总所周知,Selenium也是一款比较流行的前端自动 ...
- Web前端工程师成长之路
一.何为Web前端工程师? 前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript/D ...
- 如何成为一名优秀的前端工程师 (share)
发现一篇不错的博文,和大家分享一下,为有志成为一名优秀前端工程师的童鞋们提供一个参考. :)~ 本文来源:http://www.biaodianfu.com/what-makes-a-good-fro ...
- 深入了解 Dojo 的服务器推送技术
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- 利用fis3构建前端项目工程
FIS3是国内百度公司产出的一款前端工程构建工具,FIS3可以解决前端工程中性能优化.资源加载(异步.同步.按需.预加载.依赖管理.合并.内嵌).模块化开发.自动化工具.开发规范.代码部署等问题,首先 ...
- web前端project师知识汇总
分类: Web开发应用 一.何为Web前端project师? 前端project师,也叫Web前端开发project师.他是随着web发展.细分出来的行业.Web前端开发proj ...
随机推荐
- 深入理解javascript原型和闭包(16)——完结
之前一共用15篇文章,把javascript的原型和闭包. 首先,javascript本来就“不容易学”.不是说它有多难,而是学习它的人,往往都是在学会了其他语言之后,又学javascript.有其他 ...
- [NHibernate]持久化类(Persistent Classes)
系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 引言 持久化类是应用程序用来解决商业问题的类(比如,在电子交易程序中的Customer和Orde ...
- multipart/form-data和application/x-www-form-urlencoded的区别
在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型. 下边是说明: application/x-www-form-urle ...
- sql语句,多个表之间,通过相同内容字段的联合查询
1 , select j.id, jt.Name, j.ApproveType , j.ProductCode, j.CustomerCo ...
- 【GWAS文献】基于GWAS与群体进化分析挖掘大豆相关基因
Resequencing 302 wild and cultivated accessions identifies genes related to domestication and improv ...
- Zero-Copy&sendfile浅析
一.典型IO调用的问题一个典型的web服务器传送静态文件(如CSS,JS,图片等)的过程如下:read(file, tmp_buf, len);write(socket, tmp_buf, len); ...
- openstack网络(neutron)模式之GRE的基本原理
neutron网络目的是为OpenStack云更灵活的划分网络,在多租户的环境下提供给每个租户独立的网络环境. neutron混合实施了第二层的VLAN和第三层的路由服务,它可为支持的网络提供防火墙, ...
- 【krpano】二维码自动生成插件(源码+介绍+预览)
简介 在krpano生成的全景支持HTML5在手机中展示,而在手机中打开全景网址时不方便,需要输入网址. 最近研究了如何让krpano全景根据自己当前的网址,自动生成二维码,并在电脑浏览时,可以展示出 ...
- HtmlAgilityPack 学习和笔记
介绍: http://www.cnblogs.com/bomo/archive/2013/01/28/2879361.html 实战 c#获取外网ip 网址:http://ip138.com/ 如图: ...
- Memcache 内存分配策略和性能(使用)状态检查
前言: 一直在使用Memcache,但是对其内部的问题,如它内存是怎么样被使用的,使用一段时间后想看看一些状态怎么样?一直都不清楚,查了又忘记,现在整理出该篇文章,方便自己查阅.本文不涉及安装.操作. ...