如何实现导航栏的功能

liuguangliang 2007-08-29 04:03:36
如何实现导航栏的功能,差不多就像csdn社区左侧那种,点击大类,小类就在下面列出来。

最好是有代码,没有的话讲点思路也好。
...全文
339 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
迈克尔1998 2011-10-21
  • 打赏
  • 举报
回复
学习~
xueying1123 2007-08-29
  • 打赏
  • 举报
回复
用treeview
路人乙e 2007-08-29
  • 打赏
  • 举报
回复
怎么这么多人想学csdn左册导航?
类似这种百度一下N多
不过,虽然 .net2.0 自带treeview 1.1的也可用webcontrol 但还是用 C# + javascript实现体验好一些
建议LZ抓住CSDN的tree看上半个时辰,问题自然解决!
Jinglecat 2007-08-29
  • 打赏
  • 举报
回复
asp.net 2.0 自带 TreeView 控件
p405061658 2007-08-29
  • 打赏
  • 举报
回复
弄个 treeview先试试 很有感觉的
sendling 2007-08-29
  • 打赏
  • 举报
回复
Up
ken_flash 2007-08-29
  • 打赏
  • 举报
回复
我在老大下边沾点光
孟子E章 2007-08-29
  • 打赏
  • 举报
回复
网上有各种版本的,。搜索一下吧
Wishing_stars 2007-08-29
  • 打赏
  • 举报
回复
用infragistics组件中的UItraWebTree控件
lanymy 2007-08-29
  • 打赏
  • 举报
回复
学习
zwwlovezy1 2007-08-29
  • 打赏
  • 举报
回复
XML:
---------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<school>
<class name="classone">
<student id="1">
<name id="tom" sex="boy" />
</student>
<student id="2">
<name id="jey" sex="boy" />
</student>
<student id="3">
<name id="jam" sex="gril" />
</student>
<student id="4">
<name id="christina" sex="gril" />
</student>
</class>
<class name="classtwo">
<student id="1">
<name id="mark" sex="boy" />
</student>
<student id="2">
<name id="jane" sex="gril" />
</student>
<student id="3">
<name id="jett" sex="gril" />
</student>
<student id="4">
<name id="ateen" sex="gril" />
</student>
</class>
</school>
C#:
------------------------------------------------------------
...
using System.Xml;
using System.Xml.XPath;

public partial class Test_TreeViewDemo2 : System.Web.UI.Page
{
XmlDocument xmlDoc;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.TreeView1.ShowLines = true;
this.LoadXmlTree();
}
}

public void LoadXmlTree()
{
xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("classXml.xml"));

XmlNodeList xnl = xmlDoc.SelectSingleNode("school").ChildNodes;
TreeNode tn = new TreeNode();
tn.Text = "school";
tn.Value = "-1";
tn.Expanded = false;
this.TreeView1.Nodes.Add(tn);

foreach (XmlNode xn in xnl)
{
XmlElement xe = (XmlElement)xn;
TreeNode tnC = new TreeNode();
tnC.Text = xe.GetAttribute("name");
tnC.Value = xe.GetAttribute("name");
tnC.Expanded = true;
tn.ChildNodes.Add(tnC);
this.TreeNodeBind(xn.ChildNodes,tnC);
}
}

public void TreeNodeBind(XmlNodeList xnl,TreeNode tn)
{
foreach (XmlNode xnNext in xnl)
{
XmlElement xe = (XmlElement)xnNext;
TreeNode tnNext = new TreeNode();
tnNext.Text = xe.GetAttribute("id");
tnNext.Value = xe.GetAttribute("sex");
tnNext.Expanded = true;
tn.ChildNodes.Add(tnNext);
this.TreeNodeBind(xnNext.ChildNodes,tnNext);
}
}
zwwlovezy1 2007-08-29
  • 打赏
  • 举报
回复
用数据库记录节点也行 用XML文件也行 给你个例子吧
sql:
---------------------------------
ChildNodeID ChildNodeName ParentID
1 a
2 b
3 a1 1
4 a2 1
5 b1 2
6 a11 3
C#代码
---------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.NodeBind();//页面加载时解析数据库绑定TreeNode根节点
this.DisPanel(true);//显示或不显示
}
}

#region//数据库连接字符串
public void conString()
{
string conStr = "server=.;uid=sa;pwd=;database=Demo";
con = new SqlConnection(conStr);
}
#endregion

#region//页面加载时绑定TreeNode根节点
public void NodeBind()
{
this.tvadd.Nodes[0].ChildNodes.Clear();//清空TreeView中所有节点
this.tvadd.Nodes[0].Expanded = true;//设置根节点为展开形式
this.AddChildNode("NULL",this.tvadd.Nodes[0]);
}
#endregion

#region//递归解析数据库中节点并绑定在TreeView控件上
/// <summary>
/// 递归解析数据库中节点并绑定在TreeView控件上
/// </summary>
/// <param name="sqltj">要解析库这个节点归属于哪个父节点</param>
/// <param name="tn">要添加下一级节点的父节点</param>
public void AddChildNode(string sqltj,TreeNode tn)
{
string sql = "select * from AddNodes where ParentID";//查询该父节点下还有无子节点SQL语句
if (sqltj == "NULL")
{
sql += " IS NULL";//也就是说是根节点下面的第一级子节点
}
else
{
sql += "=" + sqltj;//查询sqltj下有无子节点
}

DataTable dt = this.dtDataBind(sql);
if (dt.Rows.Count == 0)//说明此节点下无子节点
{
return;//退出
}
else
{
for (int i = 0; i < dt.Rows.Count; i++)//循环DataTable表中子节点记录
{
TreeNode tnchild = new TreeNode();//创建新的子节点
tnchild.Text = dt.Rows[i][1].ToString();//为新建子节点的文本赋值
tnchild.Value = dt.Rows[i][1].ToString();//为新建子节点的Value赋值
tnchild.Expanded = true;//设置为不展开节点
tn.ChildNodes.Add(tnchild);//添加此节点的下一级子节点
//递归调用,一直往下直到添加完这一级下面的所有子节点为止,再转到下一个父节点,并添加所有此父节点下面的所有子节点
//i代表DataTable表中循环记录,0代表取得这个记录的ID值,为下面继续检查这个ID下是否还有子目录
//tnchild递归传递给下一次调用此方法,此时如果这个节点下还有子节点,它便成为父节点,对它下面的子节点进行添加
this.AddChildNode(dt.Rows[i][0].ToString(),tnchild);
}
}
}
#endregion
----------------------------------------
flyingfz 2007-08-29
  • 打赏
  • 举报
回复
控件. 搜索 树形控件
zwwlovezy1 2007-08-29
  • 打赏
  • 举报
回复
用asp.net2.0自带的treeview控件啊

62,041

社区成员

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

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

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

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