asp.net:求一份能从数据库中读取数据动态生成菜单目录的源码

asp.net:求一份能从数据库中读取数据动态生成菜单目录。最好是三级菜单的,研究学习... asp.net:求一份能从数据库中读取数据动态生成菜单目录。最好是三级菜单的,研究学习 展开
 我来答
要个洋气的名字3r
推荐于2016-09-26 · 超过18用户采纳过TA的回答
知道答主
回答量:98
采纳率:0%
帮助的人:59.5万
展开全部
怎么发给你呢?
算了 还是直接发给你吧,这个是我之前学习的时候,在网上找的。希望能够对你有所帮助:

第一步 建表

create table TreeTest
(
id int identity(1,1) primary key ,
treeId int, --数形结构 1,代表根目录 2,代表根的下一级目录,3代表根的子目录的子目录。。依次类推
names varchar(200), --url传的参数值
page varchar(200) --页面
)
--添加测试数据
insert into TreeTest select 1,'张三','default.aspx'
union all select 2,'李四','default1.aspx'
union all select 2,'王五','default2.aspx'
union all select 2,'唐僧','default3.aspx'
union all select 3,'八戒','default4.aspx'
union all select 3,'八戒','default5.aspx'

第二步 在页面写如下代码

<body>
<form id="form1" runat="server">
<div>
<asp:Menu ID="Menu1" runat="server">
</asp:Menu>
</div>
</form>
</body>

第三步 在页面后台写如下代码(注意不要整个复制,因为类名不一样)

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.ProviderBase;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
DataSet ds = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{

//Menu1.Items.Add(i1);
//i1.ChildItems.Add(i2);
// 在此处放置用户代码以初始化页面
SqlConnection CN = new SqlConnection("server=数据名连接地址;User id=;pwd=;database=tempdb");

//初始化连接字符串

CN.Open();
//添加命令,从数据库中得到数据
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = CN;
sqlCmd.CommandText = "select * from TreeTest";
sqlCmd.CommandType = CommandType.Text;
SqlDataAdapter adp = new SqlDataAdapter(sqlCmd);
adp.Fill(ds);

//调用递归函数,完成树形结构的生成
//tn2=AddTree(0, (TreeNode)null);
//TreeView1.Nodes.Add(tn2);
AddTree(1, (MenuItem)null);
}
public void AddTree(int ParentID, MenuItem pNode)
{
string url1;
string url2;
string url3;
string url4;

MenuItem mi = new MenuItem();
//TreeNode tn1 = new TreeNode();
DataView dvTree = new DataView(ds.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "treeId = " + ParentID;
foreach (DataRowView Row in dvTree)
{
if (pNode == null)
{ //'?添加根节点
url1 = Row["names"].ToString();
url2 = Row["page"].ToString() + "?name=" + url1;
mi.Text = url1;
mi.NavigateUrl = url2;
mi.Target = "_blank";
// tn1.Text = url1;
// tn1.NavigateUrl = url2;
Menu1.Items.Add(mi);
// TreeView1.Nodes.Add(tn1);
AddTree(Int32.Parse(Row["id"].ToString()) + 1, mi); //再次递归
}
else
{ //添加当前节点的子节点
// TreeNode tn2 = new TreeNode();

MenuItem m2 = new MenuItem();
url3 = Row["names"].ToString();
url4 = Row["page"].ToString() + "?name=" + url3;
m2.Text = url3;
m2.NavigateUrl = url4;
m2.Target = "_blank";
//tn2.Text = url3;
//tn2.NavigateUrl = url4;
pNode.ChildItems.Add(m2); //修改的地方
// pNode.ChildNodes.Add(tn2);
AddTree(Int32.Parse(Row["id"].ToString()) + 1, m2); //再次递归
}

}
}
}
更多追问追答
追问
924366274 摆渡限制,发这个企鹅油箱,谢谢
追答
恩  刚给你贴上去了,你看下哈。 希望采纳,谢谢。呵呵  我还有一个满意答案就升级了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式