<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">   
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ViewState["Expand"] = "0";
            BindTree();           
            TreeNodesExpandStateManager.RestoreExpandStateToTreeFromSession(trvTest);
        }
    }    private void BindTree()
    {
        DataTable dataTableParent = GetSourceParent();
        DataTable dataTableDetail = GetSourceDetail();
        foreach (DataRow dr in dataTableParent.Select("", "ParentId desc"))
        {
            TreeNode treeNode = new TreeNode(dr["Name"] as string);
            trvTest.Nodes.Add(treeNode);
            foreach (DataRow _dr in dataTableDetail.Select("parentid=" + (dr["parentid"] as string)))
            {
                treeNode.ChildNodes.Add(new TreeNode(_dr["Name"] as string));
            }
        }
    }
    
    DataTable GetSourceDetail()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Id");
        dt.Columns.Add("Name");
        dt.Columns.Add("ParentId");
        DataRow dataRow;
        dataRow = dt.NewRow();
        dataRow["Id"] = 1;
        dataRow["Name"] = "asp";
        dataRow["parentid"] = "1";
        dt.Rows.Add(dataRow);        dataRow = dt.NewRow();
        dataRow["Id"] = 2;
        dataRow["Name"] = "js";
        dataRow["parentid"] = "1";
        dt.Rows.Add(dataRow);        dataRow = dt.NewRow();
        dataRow["Id"] = 3;
        dataRow["Name"] = "css";
        dataRow["parentid"] = "1";
        dt.Rows.Add(dataRow);        dataRow = dt.NewRow();
        dataRow["Id"] = 4;
        dataRow["Name"] = "C#";
        dataRow["parentid"] = "2";
        dt.Rows.Add(dataRow);        dataRow = dt.NewRow();
        dataRow["Id"] = 5;
        dataRow["Name"] = "asp.net";
        dataRow["parentid"] = "2";
        dt.Rows.Add(dataRow);
        return dt;
    }
    
    DataTable GetSourceParent()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("ParentId");
        dt.Columns.Add("Name");        DataRow dataRow;
        dataRow = dt.NewRow();        dataRow["Name"] = "web";
        dataRow["parentid"] = "1";
        dt.Rows.Add(dataRow);        dataRow = dt.NewRow();        dataRow["Name"] = ".net";
        dataRow["parentid"] = "2";
        dt.Rows.Add(dataRow);
        return dt;
    }    protected void btnGo_Click(object sender, EventArgs e)
    {
        TreeNodesExpandStateManager.SaveExpandStateInSession(trvTest);     
        Response.Redirect("Default2.aspx");
    }    protected void btnToggle_Click(object sender, EventArgs e)
    {
        if (Expand == "0")
        {
            trvTest.ExpandAll();
            Expand = "1";
        }
        else
        {
            trvTest.CollapseAll();
            Expand = "0";
        }
    }    public string Expand
    {
        get
        {
            return ViewState["Expand"] as string;
        }
        set
        {
            ViewState["Expand"] = value;
        }
    }
</script><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TreeView ID="trvTest" runat="server" ImageSet="BulletedList2" 
            ExpandDepth="0" >
            <NodeStyle VerticalPadding="2" Font-Names="Tahoma" Font-Size="8pt" HorizontalPadding="2"
                ForeColor="Black"></NodeStyle>
        </asp:TreeView>
        <asp:Button ID="btnGo" runat="server" Text="Go" OnClick="btnGo_Click" />
        <asp:Button ID="btnToggle" runat="server" Text="Expand All" OnClick="btnToggle_Click" />
    </div>
    </form>
</body>
</html>

解决方案 »

  1.   

    Response.Redirect("Default2.aspx");ViewState
    ---------------------------------------这两个 是问题的原因,你没有理解这两个一个是页面跳转,一个是页面存储Redirect 时 IsPostBack 为 false ,也就是 是新开页面虽然 还是 Default2.aspx ,但 已不是之前的了ViewState 存储 是在页面 不跳转的情况下存储的
      

  2.   

    谢谢关心,面试了几家,不怎么理想,昨天去面试一家, 面试我的人 问的问题实在是悲剧我都跟他说过一年工作经验,他问我好多css还有比如 页面传值啊,如何分页啊,还让我把分页语句写出来。 真是杯具。