关于树递归的一个问题

lily_lucky 2009-03-23 10:56:37
我有个递归的方法循环加载树节点 可以实现
可是我做了一下修改 就是验证一下每个加载的节点是否存在于一个数据表里 如果存在就加载不存在就直往下传当前ID作为下次调用的父ID

结果是只有根节点数据库表中有的加载上了 其他的都没有加载上 调试的时候 子节点数据库表中的确是也加了 可是为什么显示不出来
有没有修改的方法

...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
橙子撸代码 2009-03-23
  • 打赏
  • 举报
回复
你就这么说,看了也不明白啊。
橙子撸代码 2009-03-23
  • 打赏
  • 举报
回复
肯定能实现啊,肯定是你思路有问题。
细心点。。。。
wackyboy 2009-03-23
  • 打赏
  • 举报
回复
如果你能将代码贴上来就更好了
A海阔天空 2009-03-23
  • 打赏
  • 举报
回复

我把我做的给你看下


public class TreeDealer
{
private DataSet ds;
private String UserId;

public TreeDealer(string strUserId, string subSystem, string strType)
{
string sql = "";

sql = "select * from admin_treeconfig order by sn";
ds = SqlHelper.ExeSqlForDataSet(sql, "TreeConfig");


UserId = SiteFunction.CheckNullToEmpty(strUserId);
}
public void InitTree(TreeView tv)
{
if (ds.Tables[0].Rows.Count > 0)
{
string parentID = ds.Tables[0].Rows[0]["parentID"].ToString();
InitTree(tv.Nodes, parentID);
}

}

private void InitTree(TreeNodeCollection tnc, string parentID)
{
DataView dv = new DataView();
TreeNode tmpNd;
string rightInfo, nodeId;
dv.Table = ds.Tables["TreeConfig"];
dv.RowFilter = "ParentId=" + parentID + "";


foreach (DataRowView drv in dv)
{
rightInfo = drv["RightInfo"].ToString();
nodeId = drv["nodeId"].ToString();
if (nodeId.Substring(0, 2) == "00") //是一个树枝节点
{
tmpNd = new TreeNode();
tmpNd.ID = drv["NodeId"].ToString();
tmpNd.Text = drv["NodeName"].ToString();
tmpNd.ImageUrl = "" + drv["Icon"].ToString();
tmpNd.NavigateUrl = "" + drv["Address"].ToString();
tmpNd.Target = drv["Target"].ToString();
InitTree(tmpNd.Nodes, tmpNd.ID);
if (tmpNd.Nodes.Count > 0)
tnc.Add(tmpNd);
}
else //是一个树叶节点
{
tmpNd = new TreeNode();
tmpNd.ID = drv["NodeId"].ToString();
tmpNd.Text = drv["NodeName"].ToString();
tmpNd.ImageUrl = "" + drv["Icon"].ToString();
tmpNd.NavigateUrl = "" + drv["Address"].ToString();
tmpNd.Target = drv["Target"].ToString();
tnc.Add(tmpNd);

}
}
}

lily_lucky 2009-03-23
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
InitTreeView(this.TreeView1.Nodes);//初始化数据控件
}
}
public void InitTreeView(TreeNodeCollection node)
{
this.InitTree(node, "0");

}
public void InitTree(TreeNodeCollection Nds, string parentId)
{
string connstr = ConfigurationManager.ConnectionStrings["testconn"].ConnectionString;
SqlConnection conn = new SqlConnection(connstr);
DataSet ds = new DataSet();
string sql = "select * from yn_news_class ";//查询整表视图
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
sda.Fill(ds, "table");
DataView dv = new DataView();
TreeNode tmpNd;
string intId;
dv.Table = ds.Tables[0];
dv.RowFilter = "PARENTID = '" + parentId + "'";//查询PARENTID为parentId的视图
foreach (DataRowView drv in dv)
{
tmpNd = new TreeNode();


tmpNd.Value = drv["ClassID"].ToString();
bool exit = Class1.gerRight(tmpNd.Value);
if (exit)
{
//if (drv["linkUrL"].ToString().Trim() != "")
//{
// tmpNd.Text = "<a href ='" + drv["linkUrL"].ToString().Trim() + "'target='mainFrame'>" + drv["NODENAME"].ToString() + "</a>";
//}
//else
//{
tmpNd.Text = drv["ClassName"].ToString();
//}
if (tmpNd.Parent.Value != '0'&& tmpNd.Parent )
{
Nds.Add(tmpNd);
}
else
{

}
//InitTree(tmpNd.ChildNodes, tmpNd.Value);山东

}
else
{
// tmpNd.Text = drv["ClassName"].ToString();
//}
// Nds.Add(tmpNd);
//intId = drv["PARENTID"].ToString();
//tmpNd.Text = drv["ClassName"].ToString();
// Nds.Add(tmpNd);
InitTree(tmpNd.ChildNodes, tmpNd.Value);
}


}
}

}

62,074

社区成员

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

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

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

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