当前位置:编程学习 > C#/ASP.NET >>

Treeview怎样选中某个节点

网页中的动态生成的TreeView,修改某个节点的值,点保存后页面刷新,节点就会自动收缩。有什么办法,可以展开刚修改过的这个节点的父节点,并且选中这个修改的节点。。

高手帮帮忙~~感激不尽~~ --------------------编程问答-------------------- 你可以用以个hidden你点击修改的节点的value,然后修改成功以后,自动展开,并TreeView的selectedValue=Hidden.value;就ok了。 --------------------编程问答-------------------- treenode又展开的属性
TreeView.selectNode设置选中节点 --------------------编程问答--------------------
引用 2 楼 xuexiaodong2009 的回复:
treenode又展开的属性
TreeView.selectNode设置选中节点

是的. --------------------编程问答--------------------
引用楼主 lee4755026 的回复:
网页中的动态生成的TreeView,修改某个节点的值,点保存后页面刷新,节点就会自动收缩。有什么办法,可以展开刚修改过的这个节点的父节点,并且选中这个修改的节点。。

高手帮帮忙~~感激不尽~~


动态生成的TreeView,刷新之后就没了。

假设你在page_load中重建TreeView,要注意千万不要重建节点。只要重建TreeView控件(并且保证其ID跟上一次输出html时使用的ID一样),那么asp.net就会自动给你填充和重建所有节点的。 --------------------编程问答-------------------- 我给你写个demo
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:Button ID="Button1" runat="server" Text="回发测试" onclick="Button1_Click" /> <asp:Button ID="Button2"
        runat="server" Text="创建树" onclick="Button2_Click" />
        <hr />
    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    </form>
</body>
</html>
using System;
using System.Drawing;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (ViewState["treeview"] != null && (bool)ViewState["treeview"])
            PlaceHolder1.Controls.Add(new TreeView { ID = "myTestTree" });
    }
    protected void Button1_Click(object sender, EventArgs e)
    {

    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        PlaceHolder1.Controls.Clear();
        var tr = new TreeView { ID = "myTestTree" };
        PlaceHolder1.Controls.Add(tr);
        tr.ShowLines = true;
        tr.SelectedNodeStyle.BackColor= Color.LightCyan;
        var n = new TreeNode { Text = "n1" };
        tr.Nodes.Add(n);
        n = new TreeNode { Text = "n2" };
        tr.Nodes.Add(n);
        var m = new TreeNode { Text = "n3" };
        n.ChildNodes.Add(m);
        ViewState["treeview"] = true;
    }
}

注意page_load中是如何重建TreeView的。你可以运行它,设置收缩、选中节点,然后点击“回发测试”按钮看看状态并不会丢失。

如果你多此一举地在page_load中额外设置它的属性,反而就是画蛇添足了。 --------------------编程问答--------------------
引用 1 楼 coxie007 的回复:
你可以用以个hidden你点击修改的节点的value,然后修改成功以后,自动展开,并TreeView的selectedValue=Hidden.value;就ok了。

selectNode是只读的。。。赋不了值啊。。 --------------------编程问答-------------------- 有时间得看看sp的demo什么意思... --------------------编程问答-------------------- 记录选择的那一个节点,然后找到到就OK了啊。 --------------------编程问答--------------------
引用 5 楼 sp1234 的回复:
我给你写个demo

HTML code

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.……


你这种方法看起来很不错,不过选中节点的事件怎么处理啊? --------------------编程问答--------------------
引用 4 楼 sp1234 的回复:
引用楼主 lee4755026 的回复:
网页中的动态生成的TreeView,修改某个节点的值,点保存后页面刷新,节点就会自动收缩。有什么办法,可以展开刚修改过的这个节点的父节点,并且选中这个修改的节点。。

高手帮帮忙~~感激不尽~~


动态生成的TreeView,刷新之后就没了。

假设你在page_load中重建TreeView,要注意千万不要重建节点。只要重建TreeVi……

树的每个节点都是从数据库读取的,修改节点时数据库都改了,不重建节点不行吧? --------------------编程问答-------------------- 自己顶一下,希望能被更多的高手看到。。。呵呵~ --------------------编程问答--------------------
引用 11 楼 lee4755026 的回复:
自己顶一下,希望能被更多的高手看到。。。呵呵~

5楼的就可以了

用ViewState保存选中的节点 操作完之后在取出来 展开
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,