我有一个包含两个 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;
}
在开始时第一个节点被选中。为什么选择另一个节点时它的突出显示没有被删除?
另外,我问了一个关于我没有得到答案的相同设置的不同问题。任何帮助将不胜感激。
编辑我知道设置ChildrenAsTriggers="false"
会起作用,但我想避免再次渲染树,因为它可能非常大。