asp.net:求一份能从数据库中读取数据动态生成菜单目录的源码
1个回答
展开全部
怎么发给你呢?
算了 还是直接发给你吧,这个是我之前学习的时候,在网上找的。希望能够对你有所帮助:
第一步 建表
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); //再次递归
}
}
}
}
算了 还是直接发给你吧,这个是我之前学习的时候,在网上找的。希望能够对你有所帮助:
第一步 建表
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 摆渡限制,发这个企鹅油箱,谢谢
追答
恩 刚给你贴上去了,你看下哈。 希望采纳,谢谢。呵呵 我还有一个满意答案就升级了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |