数据库结构 类似如下
id parentid text url
1 0 A A.aspx
2 1 a1 a1.aspx
3 1 a2 a2.aspx
4 0 B A.aspx
5 4 b1 b1.aspx
6 4 b2 b2.aspx
id parentid text url
1 0 A A.aspx
2 1 a1 a1.aspx
3 1 a2 a2.aspx
4 0 B A.aspx
5 4 b1 b1.aspx
6 4 b2 b2.aspx
解决方案 »
- web.config中的add key问题
- 嵌套的gridview如何导出Excel
- 从客户端(FCKeditor1="哇哇哇")中检测到有潜在危险的 Request.Form 值
- global.asax文件执行不到..急..急...急...在线等。。。
- asp.net 网站发布到本地机器IIS上出错?
- 这样的分页代码性能是不是也像DataGird一样没效率?
- HTTP authorization 中如何用编程方式把header里的 WWW-Authenticate: Negotiate 去掉
- 关于对数据库的操作
- uploadify的事件无法触发
- 请问如何将2个下拉列表框连动
- .net MVC 没了ViewState,讨论一下类似的解决方案
- 请教大家一个MARQUEE的问题
menu的话,吧treenode改成menuitem即可
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string url = ConfigurationManager.ConnectionStrings["conStr"].ToString();
SqlConnection con = new SqlConnection(url); string sql =@"select * from menu a,ruleinfo b
where a.id=b.menuid
and b.ruleid=2";
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sql, con);
da.Fill(dt); DataRow[] dtlist = dt.Select("fid=0");//取出所有的根节点
foreach (DataRow dr in dtlist)
{ //产生一个节点
TreeNode t = new TreeNode();
t.Text = dr["title"].ToString();//给节点赋值
t.NavigateUrl = dr["url"].ToString();//设定节点的超链接
t.Value = dr["id"].ToString();//保存一个值到value
t.Target = "_blank";//设定链接打开方式
string id = dr["id"].ToString();
#region
/*
DataRow[] dtcList = dt.Select("fid='" + id + "'");
foreach (DataRow dr1 in dtcList)
{
TreeNode t1 = new TreeNode();
t1.Text = dr1["title"].ToString();
t1.NavigateUrl = dr1["url"].ToString();
t.ChildNodes.Add(t1);
}*/
#endregion
//GetChild(dt,id,t) 取得当前节点的所有子节点
TreeView1.Nodes.Add(GetChild(dt,id,t));
}
}
} private TreeNode GetChild(DataTable dt, string id, TreeNode t)
{ DataRow[] dtcList = dt.Select("fid='" + id + "'");
foreach (DataRow dr1 in dtcList)
{
TreeNode t1 = new TreeNode();
t1.Text = dr1["title"].ToString();
t1.NavigateUrl = dr1["url"].ToString();
string cid= dr1["id"].ToString();
t.ChildNodes.Add(GetChild(dt,cid, t1));//递归调用函数进行循环添加所有的子节点
}
return t;
}