当我单击父节点复选框时,我有一个带有复选框的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(父节点)
有什么想法吗?提前致谢
答案 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;
}
}