读书人

如何做页面的树型菜单

发布时间: 2013-04-02 12:35:26 作者: rapoo

求助怎么做页面的树型菜单
如何做页面的树型菜单
图片是数据库的结构,class表示级别0-2,belong表示它的父节点的id。在页面上我要怎样把这些信息列出来,就是在父节点前面有加号隐藏下面的子节点的样式。 asp 树型菜单
[解决办法]
拖入一个TreeView控件 然后在后台代码用用递归遍历你那张菜单表。我一般用两个方法嵌套起来 第一个方法找出根节点 第二个方法循环递归子节点
#region 绑定树根
private void BindTreeRoot()
{

TreePerUser.Nodes.Clear();
foreach (DataRow dr in dt.Rows)
{
TreeNode tn = new TreeNode();
tn.Text = dr["companyName"].ToString();
tn.Value = "0";
tn.Expanded = false;
TreePerUser.Nodes.Add(tn);
BindTreeLeaf("0", tn);
}
}
#endregion



#region 绑定树叶
private void BindTreeLeaf(string ChildNodes, TreeNode Node)
{
DataTable dt = new DataTable();
dt = bll_dapart.GetList("ClassPre='" + ChildNodes + "' and isvalid=0 order by ClassOrder").Tables[0];
foreach (DataRow dr in dt.Rows)
{
TreeNode tn = new TreeNode();
tn.Value = dr["ClassId"].ToString();
tn.Text = dr["ClassName"].ToString();

if (Node == null)
{
TreeSell.Nodes.Add(tn);
}
else
{
Node.ChildNodes.Add(tn);


}
BindTreeLeaf(dr["ClassId"].ToString(), tn);
}
}

[解决办法]


using System;
using System.Collections.Generic;

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace Galsun.Test.Web
{
public partial class TreeView : System.Web.UI.Page
{
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dt.Columns.Add("a1");
dt.Columns.Add("a2");
dt.Columns.Add("a3");
dt.Columns.Add("num", Type.GetType("System.Int32"));
dt.Columns.Add("url");
dt.Rows.Add(new object[] { "1", "0", "我的文件夹", 2, "http://www.sina.com.cn" });
dt.Rows.Add(new object[] { "2", "0", "工作文件夹", 1, "http://www.baidu.com" });
dt.Rows.Add(new object[] { "3", "1", "图片", 1, "http://www.qq.com" });
dt.Rows.Add(new object[] { "4", "1", "文档", 2, "http://www.hao123.com" });
dt.Rows.Add(new object[] { "5", "3", "风景", 2, "http://www.163.com" });
dt.Rows.Add(new object[] { "6", "3", "人物", 1, "http://bbs.csdn.net" });
dt.Rows.Add(new object[] { "7", "2", "报告", 1, "http://www.taobao.com" });
dt.Rows.Add(new object[] { "8", "3", "写真", 3, "http://www.liuzhou.gov.cn" });

bindData("0", TreeView2.Nodes, "根目录");
}


}
private void bindData(string parentid, TreeNodeCollection tnc,string path)
{
DataRow[] ary_row = dt.Select("a2=" + parentid, "num");
foreach (DataRow item in ary_row)
{
TreeNode node = new TreeNode();
string txtpath = path + "//" + item["a3"].ToString();
node.Text = string.Format("<font onclick=\"selval(this,'{1}','{2}')\" style=\"cursor:pointer;\">{0}</font>", item["a3"].ToString(), item["url"].ToString(),"Right");
node.Value = item["a1"].ToString();
node.Expanded = true;//是否展开
//node.ShowCheckBox = true;//是否显示选择框
node.SelectAction = TreeNodeSelectAction.None;
//node.NavigateUrl = "javascript:selval('" + txtpath + "');";//连接路径
//node.SelectAction = TreeNodeSelectAction.Expand;//选择事件
tnc.Add(node);
bindData(item["a1"].ToString(), tnc[tnc.Count - 1].ChildNodes, txtpath);

}
}
}
}

读书人网 >asp.net

热点推荐