asp.net 連資料庫動態產生menu中的功能表項目

來源:互聯網
上載者:User

第一步 建表

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);        //再次遞迴 
            }

        }
    }
}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.