请教treeview递归生成无限级树的问题!

li5206610 2009-04-27 10:03:37

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 OFF



using 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);

}
}

}
}

无限级树我已经实现了,可是我点击链接的时候会在下方自动生成一个无限级树,请问为什么?
...全文
104 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
li5206610 2009-04-27
  • 打赏
  • 举报
回复
谢谢了,哎呀我没有想到这个方面啊,
yangqidong 2009-04-27
  • 打赏
  • 举报
回复
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);
}
}
}

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧