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

解决方案 »

  1.   

    你可以用以个hidden你点击修改的节点的value,然后修改成功以后,自动展开,并TreeView的selectedValue=Hidden.value;就ok了。
      

  2.   

    treenode又展开的属性
    TreeView.selectNode设置选中节点
      

  3.   


    动态生成的TreeView,刷新之后就没了。假设你在page_load中重建TreeView,要注意千万不要重建节点。只要重建TreeView控件(并且保证其ID跟上一次输出html时使用的ID一样),那么asp.net就会自动给你填充和重建所有节点的。
      

  4.   

    我给你写个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" />&nbsp;<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中额外设置它的属性,反而就是画蛇添足了。
      

  5.   

    selectNode是只读的赋不了值啊。。
      

  6.   

    有时间得看看sp的demo什么意思...
      

  7.   

    5楼的就可以了用ViewState保存选中的节点 操作完之后在取出来 展开