我有一個包含兩個UpdatePanel的ASP.Net 2.0頁面。第一個面板包含一個TreeView。第二個面板包含一個標籤,並由樹中的選擇來觸發。當我選擇一個節點時,標籤會按預期進行更新,並且我點擊的TreeNode
將突出顯示,並且之前選擇的節點不再突出顯示。但是,如果在代碼中突出顯示(選擇)了節點,則在選擇另一個節點時不會刪除突出顯示內容。當一個asp:TreeView位於UpdatePanel中時,如何清除之前的選擇?
<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"
將工作,但我想避免再次渲染樹,因爲它可能非常大。
但是,這發生在服務器端。我不希望包含該樹的面板被更新。 – tpower 2008-10-16 06:39:17