CREATE TABLE [dbo].[menu](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Title] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[url] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[description] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[ParentID] [int] NULL,
 CONSTRAINT [PK_menu] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]GO
SET ANSI_PADDING OFFusing System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;public partial class treeviewlist : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        using (SqlConnection sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString))
        {
            sqlconn.Open();
            try
            {
                SqlDataAdapter myda = new SqlDataAdapter("select * from menu", sqlconn);
                DataSet myds = new DataSet();
                myda.Fill(myds);
                this.ViewState["ds"] = myds;
            }
            catch (Exception ex)
            { Session["error"] = ex.ToString(); }
            finally
            { sqlconn.Close(); }
            addtree(0,(TreeNode)null);
        }
    }
    public void addtree(int parentid, TreeNode pnode)
    {
        DataSet ds=(DataSet)this.ViewState["ds"];
        DataView dv = new DataView(ds.Tables[0]);        dv.RowFilter = "[parentid]=" + parentid;        foreach (DataRowView row in dv)
        {
            TreeNode node = new TreeNode();
            if (pnode == null)
            {
                node.Text = row["title"].ToString();
                TreeView1.Nodes.Add(node);
                node.Expanded = true;
                addtree(Int32.Parse(row["id"].ToString()), node);
            }
            else
            {
                node.Text = row["title"].ToString();
                pnode.ChildNodes.Add(node);
                node.Expanded = true;
                 addtree(Int32.Parse(row["id"].ToString()), node);            }
        }    }
}无限级树我已经实现了,可是我点击链接的时候会在下方自动生成一个无限级树,请问为什么?

解决方案 »

  1.   

        protected void Page_Load(object sender, EventArgs e)
        {
    if(!Page.IsPostBack)
    {
            using (SqlConnection sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString))
            {
                sqlconn.Open();
                try
                {
                    SqlDataAdapter myda = new SqlDataAdapter("select * from menu", sqlconn);
                    DataSet myds = new DataSet();
                    myda.Fill(myds);
                    this.ViewState["ds"] = myds;
                }
                catch (Exception ex)
                { Session["error"] = ex.ToString(); }
                finally
                { sqlconn.Close(); }
                addtree(0,(TreeNode)null);
            }
        }
    }