【问题标题】:c# - How to get checked node value from Treeview?c# - 如何从 Treeview 获取检查的节点值?
【发布时间】:2013-09-05 13:20:01
【问题描述】:

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

有什么想法吗?提前致谢

【问题讨论】:

    标签: c# asp.net treeview


    【解决方案1】:

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

    只需要在foreach结束时设置session变量

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

    另外我不知道您是否需要在 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;
         }
    }
    

    【讨论】:

      【解决方案2】:

      树视图节点有一个属性叫做 Level,所以你可以跳过 level 为 0 的节点,当然如果你嵌套更深的 level 就会崩溃。

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

      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;
                      }
                  }
               }
          }
      

      【讨论】:

      • 感谢您的回复,能否请您分享相同的示例代码。
      • 我想我可以付出一些努力,是的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多