0

当我单击父节点复选框时,我有一个带有复选框的 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;
            }
         }
    }

在此处输入图像描述

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

有任何想法吗?提前致谢

4

2 回答 2

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;
                }
            }
         }
    }
于 2013-09-05T13:32:33.550 回答
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;
     }
}
于 2013-09-05T13:38:40.583 回答