2 façons je pensé à mettre en œuvre cette:
- Enveloppez votre TreeView avec l'Ajax UpdatePanel. C'est plus simple.
- Supprimer le lien hypertexte des noeuds de l'arborescence à l'aide de la fonction récursive, puis lier l'événement de clic côté client à tous les noeuds à l'aide de JQuery.
Plus de détails pour la méthode 2 comme suit ..
Lieu contrôle treeview sur la page ASPX
<asp:TreeView ID="TreeView1" runat="server"> </asp:TreeView>
Ajouter des noeuds fictifs et appeler la fonction récursive pour supprimer des liens hypertexte
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//add dummy nodes
TreeView1.Nodes.Add(new TreeNode() { Value = "1", Text = "One" });
TreeView1.Nodes.Add(new TreeNode() { Value = "2", Text = "Two" });
TreeView1.Nodes.Add(new TreeNode() { Value = "3", Text = "Three" });
//call recursive function to remove hyperlinks
RemoveHyperLinks(TreeView1, TreeView1.Nodes);
}
}
Mettre en oeuvre la fonction récursive
System.Web.UI.WebControls.TreeView RemoveHyperLinks(System.Web.UI.WebControls.TreeView treeView, TreeNodeCollection treeNodes)
{
foreach (TreeNode node in treeNodes)
{
node.SelectAction = TreeNodeSelectAction.None;//here the link is removed
if (node.ChildNodes != null && node.ChildNodes.Count > 0)
{
treeView = RemoveHyperLinks(treeView, node.ChildNodes);
}
}
return treeView;
}
Placez ce code JQuery à la page ASPX
//change cursor to hand when user mouseover tree nodes
$(".TreeView1_0").mouseover(function() {
$(this).css('cursor', 'pointer');
});
//unbold all nodes then bold the selected node to indicate it's selected
$(".TreeView1_0").click(function() {
$(".TreeView1_0").css('font-weight', 'normal');
$(this).css('font-weight', 'bold');
});
pas de réponse encore :( –