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的使用[前端]的更多相关文章

  1. Dojo Tree设置默认选中项并且获得它

    先上用来生成Tree的JSON数据 [    { "id": "Root", "name": "资源目录" },    ...

  2. dojo Tree 添加、删除节点

    var tree=this.tree; var store=tree.model.store; if(this.node){ console.log(this.node) var children=t ...

  3. Web前端工程师成长之路——知识汇总

    一.何为Web前端工程师?          前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript ...

  4. 前端自动化测试工具doh学习总结(二)

    一.robot简介 robot是dojo框架中用来进行前端自动化测试的工具,doh主要目的在于单元测试,而robot可以用来模仿用户操作来测试UI.总所周知,Selenium也是一款比较流行的前端自动 ...

  5. Web前端工程师成长之路

    一.何为Web前端工程师?        前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript/D ...

  6. 如何成为一名优秀的前端工程师 (share)

    发现一篇不错的博文,和大家分享一下,为有志成为一名优秀前端工程师的童鞋们提供一个参考. :)~ 本文来源:http://www.biaodianfu.com/what-makes-a-good-fro ...

  7. 深入了解 Dojo 的服务器推送技术

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  8. 利用fis3构建前端项目工程

    FIS3是国内百度公司产出的一款前端工程构建工具,FIS3可以解决前端工程中性能优化.资源加载(异步.同步.按需.预加载.依赖管理.合并.内嵌).模块化开发.自动化工具.开发规范.代码部署等问题,首先 ...

  9. web前端project师知识汇总

    分类: Web开发应用  一.何为Web前端project师?           前端project师,也叫Web前端开发project师.他是随着web发展.细分出来的行业.Web前端开发proj ...

随机推荐

  1. C++项目中的extern "C" {}

    from:http://www.cnblogs.com/skynet/archive/2010/07/10/1774964.html C++项目中的extern "C" {} 20 ...

  2. 在ie浏览器,360浏览器下,margin:0 auto;不居中的原因

    转自 http://blog.sina.com.cn/s/blog_6eef6bf60100nn4m.html margin:0 auto:不居中可能有以下两个的原因 没有设置宽度 看看上面的代码,根 ...

  3. 在Activity之间传递参数(三)——serializable和parcelable的区别

    传递值对象: 一.serializable实现:简单易用 serializable的迷人之处在于你只需要对某个类以及它的属性实现Serializable 接口即可.Serializable 接口是一种 ...

  4. jaxb

    一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实 ...

  5. 转 C# 只允许运行一个实例

    来源:http://blog.csdn.net/jin20000/article/details/3136791 互斥进程(程序), 简单点说,就是在系统中只能有该程序的一个实例运行. 现在很多软件都 ...

  6. DataTable数据检索的性能分析(转寒江独钓)

    我们知道在.NET平台上有很多种数据存储,检索解决方案-ADO.NET Entity Framework,ASP.NET Dynamic Data,XML, NHibernate,LINQ to SQ ...

  7. 《征服 C 指针》摘录6:解读 C 的声明

    一.混乱的声明——如何自然地理解 C 的声明? 通常,C 的声明 int hoge; 这样,使用“类型 变量名;”的形式进行书写. 可是,像“指向 int 的指针”类型的变量,却要像下面这样进行声明: ...

  8. ODBC API简介

    1.      数据类型: 通过SQLGetTypeInfo函数来获取ODBC 3.0支持的数据类型信息.由SQLGetTypeInfo返回的数据类型是数据源所支持的数据类型. SQLRETURN S ...

  9. WEB API异常处理

    当一个web api抛出一个异常后 此异常会被转化成一个HTTP响应 错误代码为500的服务错误 但是如果你不想让客户端看到500的错误码 你也可以自定义错误码 如下代码当用户输入的ID没有与之相关的 ...

  10. Path之Data属性语法A命令

    <Path Width="300" Height="300" Fill="Red" Data="M 100,100 L 10 ...