一个高难度问题:treeview实现两层节点没问题,扩展到无限层该怎么做,高手帮帮我

pp1234567890 2003-08-19 07:38:27
我查了以前的文章,说可以实现,但是有瓶径,如果用DATAGRID分页做会更好,
可是我TREEVIEW还不会做,今天第一次遇见,能不能教教我,DATAGRID该怎么实现,给个思路或者例子也行,谢谢~
...全文
35 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jpyc 2003-10-30
  • 打赏
  • 举报
回复
http://218.56.11.178:8009/

自己搜搜,开放源码的论坛!里边有TREEVIEW的用法。

http://expert.csdn.net/Expert/topic/2248/2248544.xml?temp=.6887018

c#的

无级控制要做无级数据库结构,需要我有个例子另给你
dxb 2003-09-18
  • 打赏
  • 举报
回复
我们正在做,需要!!!

chnbigman@163.com
yezhirong 2003-08-25
  • 打赏
  • 举报
回复
发一个:yezhirong@sina.com
谢谢!
lmdhit 2003-08-20
  • 打赏
  • 举报
回复
谢谢!学习中
yuanylong 2003-08-20
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2093/2093882.xml?temp=.3616449
bjy_ly 2003-08-20
  • 打赏
  • 举报
回复
liyu_e@163.com
cnjack 2003-08-20
  • 打赏
  • 举报
回复
看来哪天我要将我所做的关于TREEVIEW控件(节点可以扩展到无限,可以查找,修改,删除,拖动)贴出来,大家一起学习,但最主要的是我现在很忙,要整理,所以实在是抱歉;
但代码很多,是我又不知道怎么贴出来呀,那们都我怎么办呀
pp1234567890 2003-08-20
  • 打赏
  • 举报
回复
bluefox0217@sina.com
noahart 2003-08-19
  • 打赏
  • 举报
回复
关注!up
pp1234567890 2003-08-19
  • 打赏
  • 举报
回复
非常感谢楼上的,如果用DATAGRID实现这样的效果,该怎么实现??
jeffrey_rui 2003-08-19
  • 打赏
  • 举报
回复
广度优先的多层树生成代码

数据库为
ID FatherID Text isSon
节点ID 其父节点ID 节点值 是否为子节点
10 0 根1 0
20 0 根2 0
30 0 根3 1
1010 10 子1 1
1020 10 子2 0
2010 20 子3 1
102010 1020 孙1 1
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
MakeTreeRoot();//生成数
if(Request.Params["id"]!=null)//如果带有参数,则根据参数选定指定节点
SelectNodeByID(TreeView1.Nodes,Request.Params["id"].ToString());
}

}


void MakeTreeRoot()
{
SqlDataReader reader;
Database data=new Database();
string sql="select * from sHelpMenu order by ID";
data.RunSelect(sql,out reader);
//以上代码获得数据集,Database是我自己的类,诸位可以改成通用的方法
//如果ID定义为int型则每段ID或者FatherID的范围必须在10到99之间.
//如果ID为varchar型,则上面的sql因写成select * from sHelpMenu order by cast(ID as int)
while(reader.Read())
{

Microsoft.Web.UI.WebControls.TreeNode t2=new Microsoft.Web.UI.WebControls.TreeNode();
string ID=reader["ID"].ToString();
t2.ID=ID;
if(((bool)reader["isSon"]))
{
t2.ImageUrl="../image/treeviewimage/book.gif";
t2.NavigateUrl="viewSonDetail.aspx?id="+ID;
t2.Target="mainFrame";
}
else
{
t2.ImageUrl="../image/treeviewimage/folderclosed.gif";
t2.ExpandedImageUrl="../image/treeviewimage/folderopened.gif";

}
t2.Text=(string)reader["Text"];
if(reader["fatherID"].ToString().Equals("0"))
TreeView1.Nodes.Add(t2);//如果是根节点直接加到根部
else
{//否则加到其父节点之下
InsertNodeIndexByID(TreeView1.Nodes,reader["fatherID"].ToString(),t2);
}

}
reader.Close();
}

void InsertNodeIndexByID(TreeNodeCollection tnc,string ID,TreeNode tn)
{//递归查找制定ID的节点,并将给定节点加为其子节点
foreach(TreeNode node in tnc)
{
if (node.ID.Equals(ID))
node.Nodes.Add(tn);
else
{
if(node.Nodes.Count!=0)
InsertNodeIndexByID(node.Nodes,ID,tn);
}

}
}


bool SelectNodeByID(TreeNodeCollection tnc,string ID)
{//根据给定ID递归查找节点并将其选中
foreach(TreeNode node in tnc)
{
if(node.ID.Equals(ID))
{
TreeView1.SelectedNodeIndex=node.GetNodeIndex();
return true;
}
else
{
node.Expanded=true;//展开
if(node.Nodes.Count!=0)
{
bool GotIt=SelectNodeByID(node.Nodes,ID);
if(GotIt)
return true;
}
node.Expanded=false;//如果不在该节点集中则收起
}
}
return false;
}

62,041

社区成员

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

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

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

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