VS2003 treeview的复选框问题选择

eleph 2008-07-15 11:43:14
我用的是VS2003的开发的时候要实现,在树的节点前有一个复选框按钮,其子节点也有复选框.要求实现当选择父节点时,其子节点自动选择.当取消时也是一样,请各位大侠帮忙.最好有代码.
...全文
123 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengchenlu 2008-07-19
  • 打赏
  • 举报
回复
up
fellowcheng 2008-07-19
  • 打赏
  • 举报
回复
/// <summary>
/// 功能:本方法实现老总要求的权限树选择逻辑。
/// 创建时间:2006-4-11
/// </summary>
private void ApplySelectionLogic()
{
if (TreeView1.Nodes.Count > 0)
{
ApplySelectChildrenLogic(TreeView1.Nodes[0]);

Stack ancestorNodeStack = new Stack(128);
ApplySelectParentLogic(TreeView1.Nodes[0], ref ancestorNodeStack);
}
}

/// <summary>
/// 功能:本方法实现老总要求的权限树选择逻辑中的“将父节点的选定状态有选择地传播到子节点”的部份。
/// 即,如果选定某节点,而其所有子节点均未被选定,则选定其所有子节点。
/// 创建时间:2006-4-11
/// </summary>
/// <param name="node"></param>
private void ApplySelectChildrenLogic(TreeNode node)
{
if (node.Nodes.Count > 0)
{
if (node.Checked == true)
{
bool noChildrenChecked = true;
foreach (TreeNode childNode in node.Nodes)
{
if (childNode.Checked == true)
{
noChildrenChecked = false;
break;
}
}

if (noChildrenChecked == true)
{
foreach (TreeNode childNode in node.Nodes)
childNode.Checked = true;
}
}

foreach (TreeNode childNode in node.Nodes)
ApplySelectChildrenLogic(childNode);
}
}

/// <summary>
/// 功能:本方法实现老总要求的权限树选择逻辑中的“将子节点的选定状态有选择地传播到父节点”的部份。
/// 即,如果选定某节点,而其父节点未被选定,则选定其父节点。
/// 创建时间:2006-4-11
/// </summary>
/// <param name="node"></param>
private void ApplySelectParentLogic(TreeNode node, ref Stack ancestorNodeStack)
{
if (node.Checked)
{
while (ancestorNodeStack.Count > 0)
{
TreeNode ancestor = ancestorNodeStack.Pop() as TreeNode;
ancestor.Checked = true;
}
}
else
{
ancestorNodeStack.Push(node);
}

if (node.Nodes.Count > 0)
{
for (int i = 0; i < node.Nodes.Count; ++i)
{
ApplySelectParentLogic(node.Nodes[i], ref ancestorNodeStack);
}
}

if (ancestorNodeStack.Count > 0)
{
ancestorNodeStack.Pop();
}
}

/// <summary>
/// 功能:为权限树中从指定节点开始的子树中的所有对应于基本权限的节点设置特别的外观。
/// 创建时间:2006-4-11
/// </summary>
/// <param name="node">子树的根节点</param>
/// <param name="privilege">基本权限对应模块的名称的列表</param>
private void SetNodeStatusForDefaultPrivilege(TreeNode node, ref ArrayList privilege)
{
if (privilege.Count == 0)
return;

for (int i = 0; i < privilege.Count; ++i)
{
if (privilege[i].ToString() == node.Text)
{
node.Checked = true;
node.DefaultStyle = new CssCollection("color: green;");
privilege.RemoveAt(i);
break;
}
}

foreach (TreeNode childNode in node.Nodes)
{
if (privilege.Count == 0)
break;
SetNodeStatusForDefaultPrivilege(childNode, ref privilege);
}
}


忘记了,2003的是回发的TreeView,要在后台写
fellowcheng 2008-07-19
  • 打赏
  • 举报
回复
function SelectCheckBox()
{
var ele = event.srcElement;
//单击节点上的CheckBox获取所有子节点
if(ele.type=='checkbox')
{
var childrenDivID = ele.id.replace('CheckBox','Nodes');
var div = document.getElementById(childrenDivID);
if(div!=null)
{
var checkBoxs = div.getElementsByTagName('INPUT');
for(var i=0;i<checkBoxs.length;i++)
{
if(checkBoxs[i].type=='checkbox')
{
checkBoxs[i].checked=ele.checked;
}
}
}
}
}

一、简介 通过这个课程带大家从零开发一款功能全面的后台管理系统,包括项目搭建、功能实现到最后的Linux系统部署全过程。本课程使用SpringMVC + Spring + Mybatis作为主体框架,使用AdminLTE作为前端框架,使用主流关系型数据库Mysql作为存储数据库,使用非关系型数据库Redis作为缓存数据库,并集成SpringSecuriy安全框架做权限的动态管理,集成Swagger2自动生成接口文档,集成Druid连接池进行SQL性能监控,集成ActiveMQ消息中间件进行异步解耦,提高性能。最后使用linux系统进行服务部署,并搭建nginx反向代理服务器提高网站性能。 二、学习目标 通过本课程的学习带大家掌握SSM框架的开发流程,并熟练使用SpringSecurity做为安全框架进行权限管理,整合相关优秀的开源框架进行功能开发。还在项目中带大家学习前端相关的Jquery、Bootstrap等知识。课程结束之后希望大家能做到独立进行开发项目的目的,增强解决问题的能力,具备功能落地实现的能力。 三、课程涉及知识点 SpringMVC源码分析Mybatis源码分析通用MapperMysql数据库Redis缓存实现ActiveMQ消息中间件SpringSecurity鉴权Swagger2接口文档生成自定义注解AOP切面编程自定义过滤器Logback日志整合Druid性能监控Linux系统Nginx反向代理Ajax异步请求技术Jquery基本使用AdminLTE前端框架Chart图表-线状图和饼状图百度地图定位城市BootStrap前端框架BootStrap-Table插件BootStrap-Treeview插件Markdown编辑器403、404、500错误页面配置数据库事务消息提示插件toastr.js图片上传插件bootstrap fileinput数字滚动效果pv/uv流量统计...四、课程部分内容截图如下 1、首页 2、菜单管理 3、图床管理 4、图标管理 5、留言反馈管理 6、druid监控 7、登录日志

61,817

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧