我用的是VS2003的开发的时候要实现,在树的节点前有一个复选框按钮,其子节点也有复选框.要求实现当选择父节点时,其子节点自动选择.当取消时也是一样,请各位大侠帮忙.最好有代码.
解决方案 »
- 100分求助:用web安装项目打包后,部署到别的机器上老是不成功
- 请教一个有关datalist控件标签的问题
- 请教银行接口开发(急!!!)
- 求一设计思路
- 好久没有问题了,今天突然有个很急很急的问题,数据提取问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 求怎么样返回结构数组问题
- 再开一贴动态生成控件
- 在服务器上找不到脚本语言 'VB'!!没有人可以解决吗?
- 100分求救!
- 一个框架(有页眉,页脚的那种)在1024*768下显示正常时,在800*600下就错位
- 急急急急急急急急急.net2005的GridView怎么让某一列不隐藏 也不显示
- 关于GridView的问题,在线等,马上结贴
{
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;
}
}
}
}
}
/// 功能:本方法实现老总要求的权限树选择逻辑。
/// 创建时间: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,要在后台写