Mysql
 sql >> Base de données >  >> RDS >> Mysql

Insertion d'éléments dans la liste déroulante bootstrap à partir de la table SQL

Il existe plusieurs façons de le faire dans WebForms, mais vous devez d'abord créer le DIV élément du menu déroulant accessible depuis le Code Behind.

Vous voyez cet extrait ?

<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>

Notez que j'ai ajouté 2 attributs :id="myDropdownMenu" et runat="serveur" .

Après cela, vous pouvez accéder à Code Behind pour commencer à remplir le menu à partir d'une source de données.

Au moins, il y a 2 façons de le faire, pour autant que je sache.

En manipulant le InnerHtml propriété, comme ceci :

    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;
    }

Ou, en ajoutant le menu en tant que contrôles enfants , comme ceci :

    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);
        }
    }

C'est à vous de décider lequel choisir.

Au fait, juste pour compléter cet exemple, vous pouvez essayer d'appeler l'une de ces méthodes à partir de Page_Load événement, comme ceci :

MODIF :

À votre demande, j'ai modifié les exemples en ajoutant une connexion à une table dans une base de données. Voici donc le module pour charger les données :

    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;
    }

Et voici comment appeler le module :

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

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

Oh, et n'oubliez pas d'importer ces deux bibliothèques pour que cet exemple fonctionne :

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

J'espère que ça aide.