gpt4 book ai didi

asp.net - asp :TreeView is in an UpdatePanel? 时如何清除之前的选择

转载 作者:行者123 更新时间:2023-12-02 00:46:51 24 4
gpt4 key购买 nike

我有一个包含两个 UpdatePanel 的 ASP.Net 2.0 页面。第一个面板包含一个 TreeView。第二个面板包含一个标签,由树中的选择触发。当我选择一个节点时,标签会按预期更新,我点击的 TreeNode 会突出显示,而之前选择的节点不再突出显示。但是,如果一个节点在代码隐藏中是原始突出显示(选择)的,则在选择另一个节点时不会删除突出显示。

标记

<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
<ContentTemplate>
<asp:TreeView ID="TreeView1" runat="server" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
<SelectedNodeStyle BackColor="Pink" />
</asp:TreeView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="True">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text=" - "></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TreeView1" EventName="SelectedNodeChanged" />
</Triggers>
</asp:UpdatePanel>

背后的代码

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeView1.Nodes.Add(new TreeNode("Test 1", "Test One"));
TreeView1.Nodes.Add(new TreeNode("Test 2", "Test Two"));
TreeView1.Nodes.Add(new TreeNode("Test 3", "Test Three"));
TreeView1.Nodes.Add(new TreeNode("Test 4", "Test Four"));
TreeView1.Nodes[0].Selected = true;
}
}

protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
Label1.Text = TreeView1.SelectedValue;
}

在开始时,第一个节点被选中。为什么选中其他节点时它的高亮没有去掉?

另外,我问了一个不同的question about the same setup我还没有得到答案。任何帮助将不胜感激。

编辑 我知道设置 ChildrenAsTriggers="false" 会起作用,但我想避免再次渲染树,因为它可能非常大。

最佳答案

    /// <summary>
/// Remove selection from TreeView
/// </summary>
/// <param name="tree"></param>
public static void ClearTreeView(TreeView tree)
{

if (tree.SelectedNode != null)
{
tree.SelectedNode.Selected = false;
}
}

关于asp.net - asp :TreeView is in an UpdatePanel? 时如何清除之前的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/206024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com