Wie Erstellen Sie Dynamische Menüs aus der Datenbank mittels Menü-Steuerung im asp.net?

Ich möchte ein Menü erstellen, aus der Datenbank und zeigen Sie im Menü Steuerung.

Code Hier in .aspx-Seite:

 <asp:Menu ID="Menu1" Orientation="horizontal" StaticMenuItemStyle-CssClass="menuItem"
                            DynamicMenuItemStyle-CssClass="menuItem" runat="server">

In .cs-Seite von Master:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {

            populateMenuItem();
        }

    }

    private void populateMenuItem()
    {

        DataTable menuData = GetMenuData();
        AddTopMenuItems(menuData);

    }
    ///Filter the data to get only the rows that have a
    ///null ParentID (This will come on the top-level menu items)

    private void AddTopMenuItems(DataTable menuData)
    {
        DataView view = new DataView(menuData);
        view.RowFilter = "DepartmentParentID IS NULL";
        foreach (DataRowView row in view)
        {
            //MenuItem newMenuItem = new MenuItem(row["DepartmentName"].ToString(), row["DepartmentID"].ToString());
            MenuItem newMenuItem = new MenuItem(row["DepartmentName"].ToString(), row["DepartmentID"].ToString());

            Menu1.Items.Add(newMenuItem);
            AddChildMenuItems(menuData, newMenuItem);
        }

    }
    //This code is used to recursively add child menu items by filtering by ParentID

    private void AddChildMenuItems(DataTable menuData, MenuItem parentMenuItem)
    {
        DataView view = new DataView(menuData);
        view.RowFilter = "DepartmentParentID=" + parentMenuItem.Value;
        foreach (DataRowView row in view)
        {
            MenuItem newMenuItem = new MenuItem(row["DepartmentName"].ToString(), row["DepartmentID"].ToString());
            parentMenuItem.ChildItems.Add(newMenuItem);
            AddChildMenuItems(menuData, newMenuItem);
        }
    }


    private DataTable GetMenuData()
    {
        using (SqlConnection con = new SqlConnection(conStr))
        {

            using (SqlCommand cmd = new SqlCommand("SELECT  DepartmentID,OfficeID,DepartmentName,DepartmentParentID,IsActive,CreatedByID,CreatedDate,LastModifiedByID,LastModifiedDt FROM DepartmentMst", con))
            {
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }

        }
    }

Das Problem ist in AddTopMenuItems () - Methode, wo es zeigt "Objektverweis nicht auf die Instanz eines Objekts" in Zeile Menu1.Elemente.Add(newMenuItem);
Weiß nicht, Warum?

Hier ist-Daten in SQLSERVER2008 DepartmentMst:

DepartmentID  DepartmentName IsActive   DepartmentParentID
1               HR            1            NULL
2               IT            1            NULL
3            Operations    1                NULL
4            Desktop Engineer 1             2
5           Network Engineer  1             2
6           Employee Salary   1             1

Wenn die DepartmentParentID NULL ist, dann ist es das Hauptmenü und wenn nicht null, dann ist es die Kind-Knoten mit berücksichtigt werden, um seine Übergeordnete ID.

Beispiel hier http://chandradev819.wordpress.com/2011/07/03/how-to-bind-asp-net-menu-control-with-database/

Hilfe Dankbar!

InformationsquelleAutor SHEKHAR SHETE | 2012-11-12

Schreibe einen Kommentar