table按照层次关系排列后放进另一个空的table里方便我输出.???
是先序遍历,还是中序,还是后序?
是先序遍历,还是中序,还是后序?
解决方案 »
- <script language="javascript" type="text/javascript" src="E:\company\My97DatePic
- C# 关于获取项的操作
- winform flash9.0控件 连续播放Flash
- 关于对称加密,这段代码搞不懂
- C#高手请进________开发打印控件
- 第六次散分了~,爽了一把
- .Net事件个人探索后的总结(在C#语言下)
- 如何从从窗体将数据传到主窗体
- 公司给了2个礼拜独立完成一个项目
- System.Diagnostics.Process.Start(path);在vs里调试就可以打开path路径下的文件,但在iis中执行无法打开?
- DataGrid列统计问题+++!!!!!
- 如何用C#代码得到一个目录的上一级目录名?
可以先用一个查询将数据查出,用Dataset来保存,然后对ds来查。大概算法:函数(id)//找子节点
{
得到子节点;
if(id有子节点)
{
for(每个子节点:ids)
{
将ids插入到目标表中;
调用 函数(ids);
}
}
}
{
取得第个条记录
if(id有子节点)
{
for(每个子节点:ids)
{
将ids插入到目标表中;
调用 函数(ids);
}
}
}
private void CngTable(int id,DataTable rtn)
{
DataTable itemtable=rtn;
int rid=id; if(itemtable.Rows.Count!=0)
{
for(int i=0;i<itemtable.Rows.Count;i++)
{
if(Convert.ToInt32(itemtable.Rows[i]["UpID"])==rid)
{
newtable.Rows.Add(itemtable.Rows[i]);
rid=Convert.ToInt32(itemtable.Rows[i]["ID"]);
itemtable.Rows[i].Delete;
CngTable(rid,itemtable); }
}
}
}
private void CngTable(int id,ref DateTable f_dtObj)
{
DataRow[] l_drs = dt_Data.Select("UpID = " + id.ToString());
for(int i=0;i<l_drs.Length;i++)
{
DataRow i_dr = f_dtObj.NewRow();
int i_id = (int)i_drs[i]["ID"];
i_dr["ID"] = i_id;
i_dr["UpID"] = l_drs[i]["UpId"];
f_dtObj.Rows.Add(i_dr);
CngTable(i_id,f_dtObj)
}
}大概写了一下,试试看
对于树结构的数据,可以在数据库中加一能够表示层级结构的字段,来提高代码的方便性
比如,
100
100101
100102
101
101101
101102
这样需要在插入数据时进行编码,取数据就很方便。
取子节点就可以用 like 方式,排序也方便。
如果此数据在诸多地方使用(比如功能权限之类的),这样就比较好。
private void CngTable(int id,ref DataTable newtable)
{
int rid=0;DataRow[] l_drs = itemtable.Select("UpID = " + id.ToString());
for(int i=0;i<l_drs.Length;i++)
{
string dd=Convert.ToString(l_drs[i]["Title"]);
newtable.Rows.Add(l_drs[i]);
rid=Convert.ToInt32(l_drs[i]["ID"]);
CngTable(rid,ref newtable); }}