sql >> Databáze >  >> RDS >> Mysql

Vkládání položek do rozbalovací nabídky bootstrap z tabulky SQL

Existuje několik způsobů, jak to udělat ve WebForms, ale nejprve musíte vytvořit DIV prvek rozbalovací nabídky, který je přístupný z Code Behind.

Vidíte tento úryvek?

<ul class="nav nav-tabs">
    <li class="nav-item dropdown">
        <a class="btn btn-light dropdown-toggle" href="#" id="navbarDropdown1" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            Category
        </a>
        <div id="myDropdownMenu" runat="server" class="dropdown-menu" aria-labelledby="navbarDropdown">
        </div>
    </li>
</ul>

Všimněte si, že jsem přidal 2 atributy:id="myDropdownMenu" a runat="server" .

Poté můžete přejít na Code Behind začít naplňovat nabídku ze zdroje dat.

Pokud vím, existují alespoň 2 způsoby, jak to udělat.

Manipulací s InnerHtml vlastnost, jako je tato :

    private void DisplayMenuByConstructingHtmlTags(List<string> menuList)
    {
        var menuHtml = "";

        foreach (string menuText in menuList)
        {
            menuHtml += "<a class=\"dropdown-item\" href=\"#\">" + menuText + "</a>\n";
        }

        myDropdownMenu.InnerHtml = menuHtml;
    }

Nebo přidáním nabídky jako podřízených ovládacích prvků , takhle :

    private void DisplayMenuByAddingChildControls(List<string> menuList)
    {
        foreach (string menuText in menuList)
        {
            var linkMenu = new HyperLink() { CssClass = "dropdown-item", NavigateUrl = "#", Text = menuText };
            myDropdownMenu.Controls.Add(linkMenu);
        }
    }

Je na vás, který z nich si vyberete.

Mimochodem, pro dokončení tohoto příkladu můžete zkusit zavolat jednu z těchto metod z Page_Load událost, jako je tato :

UPRAVIT:

Na vaši žádost jsem vzorky upravil přidáním připojení k tabulce v databázi. Takže toto je modul pro načtení dat:

    private List<string> LoadMenuFromTable()
    {
        string connectionString = ConfigurationManager.ConnectionStrings["YourConnectionStringName"].ToString();

        var retVal = new List<string>();
        using (var connection = new SqlConnection(connectionString))
        {
            using (var cmd = new SqlCommand("SELECT menu_text FROM Table_1", connection))
            {
                connection.Open();
                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        retVal.Add((string)reader["menu_text"]);
                    }
                }
            }
        }
        return retVal;
    }

A zde je návod, jak byste modul měli nazvat:

    protected void Page_Load(object sender, EventArgs e)
    {
        var menu = LoadMenuFromTable();

        DisplayMenuByAddingChildControls(menu);
        // or DisplayMenuByConstructingHtmlTags(menu);
    }

Jo a nezapomeňte importovat tyto dvě knihovny, aby tato ukázka fungovala:

using System.Configuration;
using System.Data.SqlClient;

Doufám, že to pomůže.




  1. Sqlite nebo MySql? jak se rozhodnout?

  2. MySQL ON DUPLICATE KEY vložení do tabulky auditu nebo protokolu

  3. Nasazení aplikace Java s databází mysql desktop

  4. Operátor SQL menší nebo rovno (=) pro začátečníky