J'ai une page ASP.Net 2.0 qui contient deux UpdatePanels. Le premier panneau contient un TreeView. Le deuxième panneau contient une étiquette et est déclenché par une sélection dans l'arborescence. Lorsque je sélectionne un nœud, l'étiquette est mise à jour comme prévu et le TreeNode
sur lequel j'ai cliqué devient en surbrillance et le nœud précédemment sélectionné n'est plus surligné. Cependant, si un nœud est en surbrillance (sélectionné) dans le code, la surbrillance n'est pas supprimée lors de la sélection d'un autre nœud.Comment effacer la sélection précédente lorsqu'un fichier asp: TreeView se trouve dans un UpdatePanel?
Le balisage
<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>
Le code derrière
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;
}
Le au début du premier noeud est sélectionné. Pourquoi sa surbrillance n'est-elle pas supprimée lors de la sélection d'un autre noeud?
En outre, j'ai demandé un autre question about the same setup pour lequel je n'ai pas de réponse. Toute aide serait appréciée.
Modifier Je sais que le réglage ChildrenAsTriggers="false"
fonctionnera mais je veux éviter de rendre l'arbre à nouveau car il peut être très volumineux.
Mais cela se produit côté serveur. Je ne veux pas que le panneau contenant l'arbre soit mis à jour. – tpower
Je ne régénère pas les trois ici, juste en changeant la sélection, non? –