使用环境Visual Studio 2005,程序asp.net,Web,语言C#
1、动态绑定的TreeView,叶子节点需要加多选框,相关代码如下:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
private void TraverseTree()
{
foreach (TreeNode parentNode in TreeView1.Nodes)
{
if (parentNode.ChildNodes.Count != 0)
{
foreach (TreeNode childNode in parentNode.ChildNodes)
{
if (childNode.ChildNodes.Count == 0)
{
childNode.ShowCheckBox = true;
}
else
{
TraverseChildTree(childNode); //遍历子节点
}
}
}
}
}
private void TraverseChildTree(TreeNode node)
{
foreach (TreeNode child in node.ChildNodes)
{
if (child.ChildNodes.Count == 0)
{
child.ShowCheckBox = true;
}
else
{
TraverseChildTree(child);
}
}
}
2、取上述步骤中多选框的值
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
private string productValue = string.Empty;
//绑定数据,并设置叶子节点的多选框
TraverseTree(false);
#region 遍历树
private void TraverseTree(bool IsGetCheckedValue)
{
foreach (TreeNode parentNode in TreeView1.Nodes)
{
if (parentNode.ChildNodes.Count != 0)
{
foreach (TreeNode childNode in parentNode.ChildNodes)
{
if (childNode.ChildNodes.Count == 0)
{
if (IsGetCheckedValue)
{
if (childNode.Checked)
{
productValue += childNode.Text + ",";
}
}
else
{
childNode.ShowCheckBox = true;
}
}
else
{
TraverseChildTree(childNode, IsGetCheckedValue); //遍历子节点
}
}
}
}
}
private void TraverseChildTree(TreeNode node, bool IsGetCheckedValue)
{
foreach (TreeNode child in node.ChildNodes)
{
if (child.ChildNodes.Count == 0)
{
if (IsGetCheckedValue)
{
if (child.Checked)
{
productValue += child.Text + ",";
}
}
else
{
child.ShowCheckBox = true;
}
}
else
{
TraverseChildTree(child, IsGetCheckedValue);
}
}
}
#endregion
//获取遍历树后的选中框的值
TraverseTree(true);
hdfValue.Value = productValue; //隐藏控件,获取值,以便传到指定页面
if (!string.IsNullOrEmpty(hdfValue.Value))
{
hdfValue.Value = hdfValue.Value.Substring(0, hdfValue.Value.Length - 2);
}
3、绑定TreeView后,设置展开长度
TreeView1.ExpandDepth = 1; //设置TreeView的展开级别
此外,还有方法ExpandAll()和CollapseAll(),效果是:展开所有节点和合并所有节点。