关于TreeView 想设计动态生成TreeView1的导航栏,与数据库连接,还想请大家说的详细点,谢谢了, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我做个了哥论坛,就两级,实现起来很简单。无限极分类的咱不会: protected void Page_Load(object sender, EventArgs e) { SqlConnection SqlCon = DB.getSqlCon(); SqlCommand cmdbig = new SqlCommand("select BigClassID,BigClassName from BigClass", SqlCon); SqlDataAdapter sda = new SqlDataAdapter(cmdbig); DataSet ds = new DataSet(); sda.Fill(ds, "BigClass"); SqlCommand cmdsmall = new SqlCommand("select BigClassID,SmallClassID,SmallClassName from SmallClass", SqlCon); sda.SelectCommand = cmdsmall; sda.Fill(ds, "SmallClass"); DataRelation drl = new DataRelation ("bigsmall",ds.Tables["BigClass"].Columns["BigClassID"],ds.Tables["SmallClass"].Columns["BigClassID"]); ds.Relations.Add(drl); SqlCon.Close(); InitTree(ds); } protected void InitTree( DataSet ds) { this.TreeView.Nodes.Clear(); foreach (DataRow drBig in ds.Tables["BigClass"].Rows) { TreeNode RootNode = new TreeNode(drBig["BigClassName"].ToString(),drBig["BigClassID"].ToString()); RootNode.Value = drBig["BigClassID"].ToString(); RootNode.Expanded = true; RootNode.NavigateUrl = "~/ClassList.aspx?BigClassID=" + RootNode.Value; RootNode.Target = "myframe"; this.TreeView.Nodes.Add(RootNode); foreach (DataRow drSmall in drBig.GetChildRows("bigsmall")) { TreeNode SubNode = new TreeNode(drSmall["SmallClassName"].ToString(), drSmall["SmallClassID"].ToString()); SubNode.Value = drSmall["SmallClassID"].ToString(); SubNode.Expanded = true; SubNode.NavigateUrl = "~/CardList.aspx?SmallClassID=" + SubNode.Value; SubNode.Target = "myframe"; RootNode.ChildNodes.Add(SubNode); } } } 设置一个表 FatherNodeID:父节点ID(根结点先制定或者制定一个不存在的)NodeName:节点的名字NodeData:节点中保存的数据NodeID:节点的ID然后把你要绑定的数据文件绑到这个数据表 然后写2个方法递归调用 .NET 编码格式的问题 空字段增加值的问题 心烦,request.querystring()的问题 帮我看一下这个dropdownlist的问题 动态的添加用户的功能哪位高手给点思路提醒 DataSet和XML的问题 为什么第一次要点击两次提交,才执行加入datarow pop3 的UIDL 是唯一的吗? ASP.NET(C#)实现远程关机 我为什么不能运行*.aspx文件,请教高手 WinForm里的控件能不能用到WebForm里? 问一个数据库设计思路 动态添加录入项
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection SqlCon = DB.getSqlCon();
SqlCommand cmdbig = new SqlCommand("select BigClassID,BigClassName from BigClass", SqlCon);
SqlDataAdapter sda = new SqlDataAdapter(cmdbig);
DataSet ds = new DataSet();
sda.Fill(ds, "BigClass"); SqlCommand cmdsmall = new SqlCommand("select BigClassID,SmallClassID,SmallClassName from SmallClass", SqlCon);
sda.SelectCommand = cmdsmall;
sda.Fill(ds, "SmallClass"); DataRelation drl = new DataRelation ("bigsmall",ds.Tables["BigClass"].Columns["BigClassID"],ds.Tables["SmallClass"].Columns["BigClassID"]);
ds.Relations.Add(drl);
SqlCon.Close();
InitTree(ds);
}
protected void InitTree( DataSet ds)
{
this.TreeView.Nodes.Clear();
foreach (DataRow drBig in ds.Tables["BigClass"].Rows)
{
TreeNode RootNode = new TreeNode(drBig["BigClassName"].ToString(),drBig["BigClassID"].ToString());
RootNode.Value = drBig["BigClassID"].ToString();
RootNode.Expanded = true;
RootNode.NavigateUrl = "~/ClassList.aspx?BigClassID=" + RootNode.Value;
RootNode.Target = "myframe";
this.TreeView.Nodes.Add(RootNode);
foreach (DataRow drSmall in drBig.GetChildRows("bigsmall"))
{
TreeNode SubNode = new TreeNode(drSmall["SmallClassName"].ToString(), drSmall["SmallClassID"].ToString());
SubNode.Value = drSmall["SmallClassID"].ToString();
SubNode.Expanded = true; SubNode.NavigateUrl = "~/CardList.aspx?SmallClassID=" + SubNode.Value;
SubNode.Target = "myframe";
RootNode.ChildNodes.Add(SubNode);
}
}
}
FatherNodeID:父节点ID(根结点先制定或者制定一个不存在的)
NodeName:节点的名字
NodeData:节点中保存的数据
NodeID:节点的ID
然后把你要绑定的数据文件绑到这个数据表
然后写2个方法递归调用