您的位置:首页 > 编程语言 > ASP

在Coolite Asp.Net MVC 中用Extjs 实现带Check的树

2010-05-24 14:38 453 查看
  带Check状态的树,功能说明:

  1)当一个节点选中时,其子节点也都选中;

  2)当一个节点取消选中时,其子节点也都取消选中,其父接点也都需要取消选中

  效果见图:

  代码

function setDataSetState(checked, node) {
var records = dsRoleRights.getRange();
var count = records.length;
var i = 0;
for (i; i <= count; i++)
if (records[i]['data'].Id == node.id)
break;
var r = null;
if (count >= i) {
r = records[i];
if (r['data'].HasCheck != checked) {
//alert(node.id+'数据'+r['data'].HasCheck+',操作'+checked)
r.set('HasCheck', checked);
r.commit(true);
}
}
}

var flag = true;

var firstId = '';
var isUp = true;
var nodeCheckchange = function(node, checked) {
if (firstId == '')
firstId = node.id;

if (checked) {
if (firstId = node.id)
setDataSetState(checked, node);
node.eachChild(setNodeChecked);
}
else {
setDataSetState(checked, node);
if (firstId == node.id) {
isUp = false;
}

if (!isUp) {
node.eachChild(setNodeUnChecked);
}
if (firstId == node.id)
isUp = true;

if (isUp) {
var parent = node.parentNode;
while (parent != null) {
parent.getUI().toggleCheck(false);
parent = parent.parentNode;
}
}
}

if (firstId == node.id)
firstId = '';
}

var setNodeUnChecked = function(node) {
node.getUI().toggleCheck(false);
}
var setNodeChecked = function(node) {
node.getUI().toggleCheck(true);
}


firstId这个变量很重要,它记录了我们发生Check6事件的起始位置。isUp是判断事件是否向上触发。

到此为止我们实现了这样的Check树,及存取操作,你也动手试一试吧,:)干活,干活了。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: