c# - 如何从Treeview获取已检查的节点值?

时间:2013-09-05 13:20:02

标签: c# asp.net treeview

当我单击父节点复选框时,我有一个带有复选框的Treeview,也会检查子节点

我想获取已检查的子节点值

在下面的代码中,我得到了所有选中的值,甚至父节点值

但我不想要那个父节点。

  protected void btnAdd_Click(object sender, EventArgs e)
    {
        if (TreeView1.CheckedNodes.Count > 0)
        {
            foreach (TreeNode node in TreeView1.CheckedNodes)
            {
                string checkedValue = node.Text.ToString();
                activityData = new ActivityData { ActivityName = checkedValue };
                listActivity.Add(activityData);
                Session["listActivity"] = listActivity;
            }
         }
    }

enter image description here

在上图中我不想获得HR Activity(父节点)

有什么想法吗?提前致谢

2 个答案:

答案 0 :(得分:0)

有一个名为Level的树视图节点的属性,因此您可以跳过级别为0的节点,当然如果您更深层次地嵌套,则会崩溃。

如果您知道它是哪个父节点,则迭代它的子节点并测试是否已检查。

protected void btnAdd_Click(object sender, EventArgs e)
    {
        if (TreeView1.CheckedNodes.Count > 0)
        {
            foreach (TreeNode node in TreeView1.CheckedNodes)
            {
                if (node.Level > 0)
                {
                  string checkedValue = node.Text.ToString();
                  activityData = new ActivityData { ActivityName = checkedValue };
                  listActivity.Add(activityData);
                  Session["listActivity"] = listActivity;
                }
            }
         }
    }

答案 1 :(得分:0)

使用以下代码。主父节点没有父节点。

您只需要在foreach

的末尾设置会话变量

请记住,访问或分配会话变量意味着对象的反序列化/序列化正在发生

此外,我不知道您是否需要在 foreach 之前清除或初始化 listActivity 。您可以使用

执行此操作
listActivity = new List<ActivityData>() ;

listActivity.Clear();

这是代码

protected void btnAdd_Click(object sender, EventArgs e)
{
    if (TreeView1.CheckedNodes.Count > 0)
    {
        foreach (TreeNode node in TreeView1.CheckedNodes)
        {
            //The main parent node does not have a parent
            if(node.Parent != null)
            {
                string checkedValue = node.Text.ToString();
                activityData = new ActivityData { ActivityName = checkedValue };
                listActivity.Add(activityData);
            }
        }

        //stablish the session variable only when the foreach has finished
        Session["listActivity"] = listActivity;
     }
}