TreeView用数据库填充不能无限分类(问题解决30分全给)

lshfong 2006-12-20 02:52:44
很奇怪,只能填充到二级,下一级就没有了,用数据库跟踪,二级以下没有sql语句执行,哪位大哥指点一下,有完整的源码更好,谢谢!解决了问题30分全给.
数据库结构:
id fid name

protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
if (e.Node.ChildNodes.Count == 0)
{
switch (e.Node.Depth)
{
case 0:
PopulateCategories(e.Node);
break;
case 1:
PopulateProducts(e.Node);
break;
}
}
}
void PopulateCategories(TreeNode node)
{
SqlCommand sqlQuery = new SqlCommand(
"Select name, id From trreview where fid = 0");
DataSet resultSet;
resultSet = RunQuery(sqlQuery);
if (resultSet.Tables.Count > 0)
{
foreach (DataRow row in resultSet.Tables[0].Rows)
{
TreeNode NewNode = new
TreeNode(row["name"].ToString(),
row["id"].ToString());
NewNode.PopulateOnDemand = true;
NewNode.SelectAction = TreeNodeSelectAction.Expand;
node.ChildNodes.Add(NewNode);
}
}
}
void PopulateProducts(TreeNode node)
{
SqlCommand sqlQuery = new SqlCommand();
sqlQuery.CommandText = "Select Name From trreview Where fid = @categoryid";
sqlQuery.Parameters.Add("@categoryid", SqlDbType.Int).Value = node.Value;
DataSet ResultSet = RunQuery(sqlQuery);
if (ResultSet.Tables.Count > 0)
{
foreach (DataRow row in ResultSet.Tables[0].Rows)
{
TreeNode NewNode = new TreeNode(row["Name"].ToString());
NewNode.PopulateOnDemand = true;
NewNode.SelectAction = TreeNodeSelectAction.Expand;
node.ChildNodes.Add(NewNode);
}
}
}
private DataSet RunQuery(SqlCommand sqlQuery)
{
string connectionString = ConfigurationManager.ConnectionStrings["pubsConnectionString"].ConnectionString;
SqlConnection DBConnection =
new SqlConnection(connectionString);
SqlDataAdapter dbAdapter = new SqlDataAdapter();
dbAdapter.SelectCommand = sqlQuery;
sqlQuery.Connection = DBConnection;
DataSet resultsDataSet = new DataSet();
try
{
dbAdapter.Fill(resultsDataSet);
}
catch
{

}
return resultsDataSet;
}
...全文
98 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lshfong 2006-12-20
  • 打赏
  • 举报
回复
SqlDataSource dc = new SqlDataSource();
dc.ConnectionString = "Data Source=MIAOPING;Initial Catalog=pubs;Persist Security Info=True;User ID=sa;Password=351176715";
dc.SelectCommand = "select * from treeview where fid='" + id + "'";
DataSet ds = new DataSet();
下一句怎么写,谢谢
mincunbao 2006-12-20
  • 打赏
  • 举报
回复
嗯,用SqlDataSource也可以,只要把數據庫中數據讀出來就可以
lshfong 2006-12-20
  • 打赏
  • 举报
回复
dc是不是SqlDataSource
mincunbao 2006-12-20
  • 打赏
  • 举报
回复
dc是我自定的數據庫連接讀取方法,你把dc.RunSQL(selectTree, ref ds);去掉,換成自己的讀數據庫操作就可以了
mincunbao 2006-12-20
  • 打赏
  • 举报
回复
其中["FuncName"]是名稱字段,["FuncID"]是名稱對應得名稱id的字段,["Url"]是連接地址字段
lshfong 2006-12-20
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
if (!this.Page.IsPostBack)
{
TreeDataband();
}
}

public void TreeDataband()
{
Main_Tree.Nodes.Clear();
TreeNode rootNode = new TreeNode();
rootNode.Text = "根節點";
rootNode.Expanded = true;
rootNode.Selected = true;
Main_Tree.Nodes.Add(BandTree(rootNode, "-1"));
}

public TreeNode BandTree(TreeNode node, string id)
{
string connectionString = ConfigurationManager.ConnectionStrings["pubsConnectionString"].ConnectionString;
string selectTree = "select * from treeview where fid='" + id + "'";

DataSet ds = new DataSet();
dc.RunSQL(selectTree, ref ds);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
TreeNode nd = new TreeNode();
nd.Text = ds.Tables[0].Rows[i]["Name"].ToString();
nd.Value = ds.Tables[0].Rows[i]["fid"].ToString();
nd.NavigateUrl = ds.Tables[0].Rows[i]["Url"].ToString();
nd.ChildNodes.Add(BandTree(nd, nd.Value));
nd.Expanded = false;
nd.SelectAction = TreeNodeSelectAction.Expand;
if (nd != null)
node.ChildNodes.Add(nd);
}
return node;
}
lshfong 2006-12-20
  • 打赏
  • 举报
回复
有这个错误 1 当前上下文中不存在名称“dc” E:\vs2005\Default10.aspx.cs 39 9 E:\vs2005\
mincunbao 2006-12-20
  • 打赏
  • 举报
回复
那是讀數據庫,執行上面select語句的,你寫好連接數據庫的語句,然後sqlcommand,sqldataDpter...
mincunbao 2006-12-20
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
if (!this.Page.IsPostBack)
{
TreeDataband();
}
}

public void TreeDataband()
{
Main_Tree.Nodes.Clear();
TreeNode rootNode = new TreeNode();
rootNode.Text = "根節點";
rootNode.Expanded = true;
rootNode.Selected = true;
Main_Tree.Nodes.Add(BandTree(rootNode, "-1"));
}

public TreeNode BandTree(TreeNode node, string id)
{
string selectTree = "select * from FuncTree where FuncParentID='" + id + "'";
DataSet ds = new DataSet();
dc.RunSQL(selectTree, ref ds);//這裏是讀數據庫執行查詢語句的,你按照你的數據庫讀就好了,其他的也都很明瞭了阿
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
TreeNode nd = new TreeNode();
nd.Text = ds.Tables[0].Rows[i]["FuncName"].ToString();
nd.Value = ds.Tables[0].Rows[i]["FuncID"].ToString();
nd.NavigateUrl = ds.Tables[0].Rows[i]["Url"].ToString();
nd.ChildNodes.Add(BandTree(nd, nd.Value));
nd.Expanded = false ;
nd.SelectAction = TreeNodeSelectAction.Expand;
if (nd != null)
node.ChildNodes.Add(nd);
}
return node;
}
lshfong 2006-12-20
  • 打赏
  • 举报
回复
dc.RunSQL(selectTree, ref ds);
dc怎么定义
把数据库部份也写一下吧,谢谢。解决了马上给分
mincunbao 2006-12-20
  • 打赏
  • 举报
回复
你前一帖子我就把代碼發給你啦,照我那寫就可以了

62,046

社区成员

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

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

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

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