问题描述:
1、我是用的IE Web Control中的Treeview来实现权限数(如果能用asp.net2.0中的TreeView实现最好),
2、权限树的规则:能访问子节点,则必能访问他的父节点;某节点不能访问,则就不能访问它的子节点。
3、实现就是:某一节点从unchecked-checked了,那么它的父节点就改成Checked了,当然要递归了。同样:如果该节点从unchecked->checked,他的子节点中如果有被checked的要改成unChecked,同样递归。注意:要求是客户端(Javascript)实现,
本来我是实现了IE Web Control中的Treeview的,可是当返回到服务器端时居然没有保存状态,郁闷。我是用的TreeNode.setAttribute("checked",true,0);最好用ASP.NET2.0中的TreeView实现。先谢谢了,高手们!
1、我是用的IE Web Control中的Treeview来实现权限数(如果能用asp.net2.0中的TreeView实现最好),
2、权限树的规则:能访问子节点,则必能访问他的父节点;某节点不能访问,则就不能访问它的子节点。
3、实现就是:某一节点从unchecked-checked了,那么它的父节点就改成Checked了,当然要递归了。同样:如果该节点从unchecked->checked,他的子节点中如果有被checked的要改成unChecked,同样递归。注意:要求是客户端(Javascript)实现,
本来我是实现了IE Web Control中的Treeview的,可是当返回到服务器端时居然没有保存状态,郁闷。我是用的TreeNode.setAttribute("checked",true,0);最好用ASP.NET2.0中的TreeView实现。先谢谢了,高手们!
解决方案 »
- VS2008 SQLDATASOURCE生成的SQL中大于符号自动变成>
- 在 ASP.NET 母版页内的 内容页里 能否嵌入 HTML 类型网页
- 请问网站测试好用,挂到空间就不能用,高手指点。
- 关于包含和不包含的一个正则表达式
- javascript问题:怎样引用一个iframe里页面的元素
- 高分求教Grid分组实现~~~~~~~~~~~~~~~~~~~~~~~~~
- 页面刷新的各种问题
- 用.net能做出这样的图吗?高分征求,提供线索者也有分! [第二次发分]
- 今天到书店想买几本关于ASP。NET的书。清华出版。和邮电的哪一个好啊?
- 大家都是.NET的初学者,加强联系,共同进步吧,请各位留下QQ号
- 关于HttpApplication生命周期的问题
- 怎样能让背景图片与页面的控件位置上对应
原来的
3、实现就是:某一节点从unchecked-checked了,那么它的父节点就改成Checked了,当然要递归了。同样:如果该节点从unchecked->checked,他的子节点中如果有被checked的要改成unChecked,同样递归。
修改后:
3、实现就是:某一节点从unchecked-checked了,那么它的父节点就改成Checked了,当然要递归了。同样:如果该节点从checked->unchecked,他的子节点中如果有被checked的要改成unChecked,同样递归。我同时还发了一个问题:专门讨论用asp.net2.0的Treeview实现权限树的功能,
大家可以看看:
http://community.csdn.net/Expert/topic/4616/4616186.xml?temp=.3292353
如果此层的所有的兄弟节点有选中的,则退出。
如果都没有选中,则清除此父节点,并再以父节点 当此节点递归(只向上递归)。
//伪码
//选中或清除选中所有子节点
function setAllChildrenState(rootNode,check)
{
if (rootNode == null || rootNode.chilerenNode.count == 0)
return;
foreach(node n in rootNode)
{
node.checked = check;
SelectAllChildren(node);
}
}
//选中所有父节点
function selectAllParent(node)
{
if (node == null )
return; while(node.parent != null)
{
node.checked=true;
node = node.parent;
}
}
//清除父节点,然后同一层的兄弟都没有选中的话
function clearParent(node)
{
if (node == null || node.Parent == null)
return; foreach(Node ch in node.Parent.ChileredNode)
{
if(ch.checked)//如果有兄弟节点选中
return;//到此结束
}
//所有的兄弟都没有选中
n.checked = false; //清除此父节点
clearParent(n);
}function onchecked ()
{
node = e.source;
if (node.checked)//某节点选中时
{
setAllChildrenState(node,true);
selectAllParent(node);
}
else//某节点清除时
{
setAllChildrenState(node,false);
clearParent(node);
}
}