一张数据表结构: ID表示索引,自动生成; FI表示 父栏目的ID; Level表示所在的层级ID FI Level Title
--- ------ ------- -------
1 0 0 新闻
2 1 1 国内
3 2 2 陕西
4 3 3 西安
5 0 0 体育
6 5 1 NBA
7 5 1 足球将这样的数据表解析成:├新闻
├国内
├陕西
├西安
├体育
├NBA
├足球
--- ------ ------- -------
1 0 0 新闻
2 1 1 国内
3 2 2 陕西
4 3 3 西安
5 0 0 体育
6 5 1 NBA
7 5 1 足球将这样的数据表解析成:├新闻
├国内
├陕西
├西安
├体育
├NBA
├足球
解决方案 »
- asp.net做的网站怎么让别的电脑防问
- 谁能优上化一上传组件
- <td><%#DataBinder.Eval(Container.DataItem, "price")%></td>,可以加上判断吗
- .net 访问出错 希望高手协助搞定一下
- 【元旦送分】GridView 导到 Excel , 如何添加表头标题列和单位名称,还有填报日期列???
- 如何输出ORACLE中保存的BLOB数据
- 請問在C#中如何判斷一個字段值是否為日期型?
- 网站无辜不能访问,要重新启动应用程序池才能访问,是什么原因?
- 请问怎样把双引号变成单引号?
- 想在页面用到一个类似textBox的控件编辑一个html格式文档,然後得到文档的html原码,这个控件如何加入工具条?
- IIS网站设置为https访问,MVC框架,怎样给某个Views设置为http访问?
- 求高手,一个页面上让暂时禁用按钮的问题
id title parent_id 自增列 标题 父id
---------------------
1 新闻 0
2 体育 0
3 国内 1
4 陕西 1
5 西安 1
6 NBA 2
7 足球 2
tnc.Add(new TreeNode(xmlNode.Name));
foreach(XmlNode n in xmlNode.ChildNodes) {
BindXmlToTreeview(n, tnc[tnc.Count - 1].Nodes);
}
}
通过FL获取child
http://topic.csdn.net/u/20090220/18/15a0931d-c150-4cc6-8c8a-af2e9334a65b.html
{
this.nextLeveltreeView.Nodes.Clear();//清空 long idx = 0; //设置一级id if (Session["upLevel"] == null)
{
long s = long.Parse(Session["defaultLevel"].ToString());
idx = s;
}
else//如果得到了
{
idx = long.Parse(Session["upLevel"].ToString());
} //调用添加的方法 this.nextLeveltreeView.Nodes.Add(GetNodeByIdx(idx));
this.nextLeveltreeView.DataBind();
}
/// <summary>
/// 根据idx获取根节点,以及其子节点
/// </summary>
/// <param name="idx"></param>
/// <returns></returns>
protected TreeNode GetNodeByIdx(long idx)
{ zyb_Title title = new RoleToTitlteManagerClient().GetTitleById(idx);
TreeNode root = ParseFromzyb_Title(title); GetAllChildNodes(idx, root); return root; }
/// <summary>
/// 从zyb_Title实例转化为TreeNode
/// </summary>
/// <param name="title"></param>
/// <returns></returns>
protected TreeNode ParseFromzyb_Title(zyb_Title title)
{
TreeNode node = null;
if (title != null)
{
node = new TreeNode();
node.Value = title.ownLevel.ToString();
node.Text = title.titleName;
node.NavigateUrl = title.locationUrl;
node.Target = "main";
}
return node;
}
/// <summary>
/// 获取 跟进当前id获取当前节点下的所有子节点
/// </summary>
/// <param name="idx"></param>
/// <param name="root"></param>
protected void GetAllChildNodes(long idx, TreeNode root)
{
List<zyb_Title> ilist = new RoleToTitlteManagerClient().GetAllOwnLevelByUplevelId(idx); if (ilist == null || ilist.Count == 0)
{
return;
}
else
{
foreach (zyb_Title title in ilist)
{
TreeNode ChildNode = ParseFromzyb_Title(title);
root.ChildNodes.Add(ChildNode); GetAllChildNodes(title.idx, ChildNode);//递归
}
}
}
页面上只有一个拖拽的treeView服务器的控件
{
StringBuilder strSql = new StringBuilder("SELECT ID,TITLE FROM Base_News WHERE ISNULL(FI,0)=0 ORDER BY ID ASC");
SqlDataTable dt = DbHelper.ExecuteQuery(strSql.ToString());//获取所有父节点
for(int i=0;i<dt.Rows.Count;i++)
{
TreeNode ParentNode = new TreeNode(dt.Rows[i]["TITLE"].ToString(),dt.Rows[i]["ID"].ToString());
trv.Nodes.Add(ParentNode);
BindChild(ParentNode);
}
}public void BindChild(TreeNode tn)
{
string strSql = "SELECT ID,TITLE FROM Base_News WHERE FI="+ tn.Value;
SqlDataTable dt = DbHelper.ExecuteQuery(strSql.ToString());//获取参数节点的所有子节点
for(int i=0;i<dt.Rows.Count;i++)
{
tnChild = new TreeNode(dt.Rows[i]["TITLE"].ToString(),dt.Rows[i]["ID"].ToString());
string strSql ="SELECT COUNT(ID) FROM Base_News WHERE FI="+ tnChild.Value;
if(DbHelper.ExecuteScalar(strSql,0)!= 0)BindChild(tnChild); //递归
tn.ChildNodes.Add(tnChild);
}
}在page_load事件中调用BindNode("TreeVie控件ID")就可以了,数据库访问方法你得自己重新写。