У меня есть страница 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"
будет работать, но я хочу избежать повторного рендеринга дерева, поскольку оно может быть очень большим.