问个关于tree的问题??

ztx998 2004-04-02 01:39:14
就剩30分了,大家帮个忙。
数据库中有这样一个表

id text
010101 sdfsd
010102 adfsdf
010103 sdfdfs
010201 asdfa
010202 sadf
010203 asdf
020301 adas
020302 asdf
020401 asdfas
等等

我想把它行成一个树的结构,该怎么实现???
...全文
95 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztx998 2004-04-03
  • 打赏
  • 举报
回复
自己解决了,谢谢各位
newcar 2004-04-02
  • 打赏
  • 举报
回复
可以,用循环+递归。。。。已经是老问题了。。。。
数据库设计最好改一下能合理一些。。。
menuid menuanme (parentid)上级id
01 *** null
0101 *** 01
010101 ** 0101
这样就比较好一点。。。
public class tree : System.Web.UI.Page
{
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;

public string strsql;
public string strConn;
public DataSet ds = new DataSet() ;
public DataSet ds1 = new DataSet() ;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!Page.IsPostBack)
{
TreeView1.Nodes.Clear();
CreateDataSet();
intiTree(TreeView1.Nodes, "");
//InitDevelop();
}


}
private void CreateDataSet()
{
SqlConnection myConn =new SqlConnection();
strConn =System.Configuration.ConfigurationSettings.AppSettings["strconn"];

SqlCommand myCmd =new SqlCommand("select * from SY_Menu",myConn);
SqlDataAdapter datmenu1 =new SqlDataAdapter();
myConn.ConnectionString = strConn;
myCmd.Connection = myConn;
datmenu1.SelectCommand = myCmd;
datmenu1.Fill(ds, "menu1");

}
private void intiTree(TreeNodeCollection Nds,string parentId)
{
//int intId ;
string strid;
DataView dv =new DataView();
dv.Table = ds.Tables["menu1"];
TreeNode tmpNd ;

dv.RowFilter = "parentid='" + parentId + "'";
foreach(DataRowView drv in dv)
{
tmpNd = new TreeNode();
strid = drv["menuid"].ToString();
tmpNd.ID = strid;
//tmpNd.Expanded = true;
tmpNd.Expanded=false;
tmpNd.Text = drv["menuname"].ToString() ;
if(drv["menulevel"].ToString() != null)
{ tmpNd.NavigateUrl=drv["ule"].ToString();
tmpNd.Target = "main";
}
Nds.Add(tmpNd);

intiTree(Nds[Nds.Count - 1].Nodes, strid);
}

}

ztx998 2004-04-02
  • 打赏
  • 举报
回复
没明白,大侠在说说

说细点
aero_boy 2004-04-02
  • 打赏
  • 举报
回复
public class node
id as integer
node as integer
text as string
child as new collection
end class

在用一个循环加递归就行了

ztx998 2004-04-02
  • 打赏
  • 举报
回复
难道这种表就真的不能行成一个树吗??

他的id是很有规律的啊
programmeraaron 2004-04-02
  • 打赏
  • 举报
回复
table :
id parent_id name value
function:
getSubNodes(long pParentID)// 根据pParentID的值返回所有下级节点

在程序里使用递归来得到所有的节点
比如:顶级节点的Parent_id=-1,而其他的都是对应父节点的ID
programmeraaron 2004-04-02
  • 打赏
  • 举报
回复
no way
ztx998 2004-04-02
  • 打赏
  • 举报
回复
自己顶一下

帮帮忙看看
设备树(device tree)机制是Linux内核从linux-3.x版本开始引进的一种机制,目的是解决内核源码的arch/arm目录下代码混乱的:随着ARM生态的快速发展,在内核源码的arch/arm目录下,存放着几十种arm芯片和几百个开发板相关的源文件,很多开发板和处理器的中断、寄存器等相关硬件资源都在这个目录下以.c或.h的文件格式定义。而对于内核来说,与这些硬件耦合,会导致内核代码混乱不堪,每个开发板上运行的内核镜像都必须单独编译配置,无法通用。什么时候Linux内核能像Windows镜像那样,无论你的电脑什么配置,一个Windows安装包,都可以直接下载安装运行呢?设备树机制,实现了Linux内核和硬件平台的解耦:每个硬件平台的硬件资源使用一个设备树文件(xxx.dts)来描述,而不是在arch/arm下以.c 或 .h 文件来定义。Linux内核是一个通用的内核,在启动过程中,在通过解析设备树中的硬件资源来初始化某个具体的平台。 引入设备树后,很多和内核驱动开发的工作也发生了变化:以往驱动工程师关注的头文件宏定义、寄存器定义,现在这些基本上不用关注,关注的重点则转向了如何根据硬件平台去配置和修改设备树文件。很多驱动的编程接口也发生了变化,开始慢慢使用device tree提供的编程接口去开发驱动。本期课程主要面向嵌入式开发人员,分享Linux下驱动开发所需要的设备树知识和必备技能

62,074

社区成员

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

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

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

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