关于嵌套for循环构造数的问题

xf1898 2010-10-26 08:29:49

for (int i = 0; i < gts.Count; i++)
{
TreeNode tn = new TreeNode();
for (int j = 0; j < i; j++)
{

if (gts[j].pgtId == gts[i].gtId)
{
TreeNode tn1 = new TreeNode(gts[j].gtName, gts[j].gtId.ToString());
gts[i].Tn.ChildNodes.Add(tn1);
}
if (gts[i].pgtId == gts[j].gtId)
{
TreeNode tn1 = new TreeNode(gts[i].gtName, gts[i].gtId.ToString());
gts[j].Tn.ChildNodes.Add(tn1);
}
}
if (gts[i].pgtId == 0)
{
tv.Nodes.Add(gts[i].Tn);
}

}

gts是泛型实体类 tv就是树

我的代码是这样的 读出来的结果只包含了二级节点 其实我有4级节点的....这是撒问题?
...全文
156 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xf1898 2010-10-26
  • 打赏
  • 举报
回复

List<GoodsType > gts= dal.getList();
List<TreeNodes> tns = new List<TreeNodes>();
tv.Nodes.Clear();
foreach (GoodsType gt in gts)
{
TreeNodes tn=new TreeNodes ();
tn.Name = gt.gtName;
tn.Pid = gt.pgtId.ToString();
tn.Value = gt.gtId.ToString();
tns.Add(tn);
}
for (int i = 0; i < tns.Count; i++)
{
if (tns[i].Pid == "0")
{
tv.Nodes.Add(tns[i].TN);
}

for (int j = 0; j < i; j++)
{

if (tns[i].Pid == tns[j].Value)
{
tns[j].TN.ChildNodes.Add(tns[i].TN);

}
if (tns[j].Pid == tns[i].Value)
{
tns[i].TN.ChildNodes.Add(tns[j].TN);

}
}


}



这个可以了...都不需要实例化treeNode的 刚刚测试 可以实现无限级 比递归效率高N倍...

真悲剧 自己提问题 自己解决
银狐被占用 2010-10-26
  • 打赏
  • 举报
回复
我给你发的代码不就是递归吗
xf1898 2010-10-26
  • 打赏
  • 举报
回复
那递归应该怎么做? 能给段代码不 感激不尽
银狐被占用 2010-10-26
  • 打赏
  • 举报
回复
protected void AddTreeChild(int parentid, TreeNode tn)
{
TreeNode ctn;
string Sql = "Select * From T_tree Where Parentid=" + parentid.ToString();
DataSet ds = FoxerClass.DBClass.getDataSet(Sql, "tree");
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
ctn = new TreeNode();
DataRow dr = ds.Tables[0].Rows[i];
string pageurl = dr["pageurl"].ToString() != "" ? dr["pageurl"].ToString() : "无";
ctn.Text = dr["pagename"].ToString() + "(" + pageurl + ")";
ctn.Value = dr["id"].ToString();
ctn.NavigateUrl = "#";
tn.ChildNodes.Add(ctn);
AddTreeChild((int)dr["id"], ctn);
}
}
沝林 2010-10-26
  • 打赏
  • 举报
回复
构造树还是用递归实现吧
银狐被占用 2010-10-26
  • 打赏
  • 举报
回复
出二级是正常的,要是出四级才不正常。
你只实例了两级TreeNode对象,当然只能显示两级。
写个函数递归吧。
xf1898 2010-10-26
  • 打赏
  • 举报
回复
泛型集合 List<T>
damjmk2 2010-10-26
  • 打赏
  • 举报
回复
gts[i] 这里面保存的是什么?
xf1898 2010-10-26
  • 打赏
  • 举报
回复
高手在那 在线等

62,243

社区成员

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

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

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

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