sql >> Base de Datos >  >> RDS >> Mysql

Insertar elementos en el menú desplegable de arranque desde la tabla SQL

Hay algunas formas de hacerlo en WebForms, pero primero debe crear el DIV elemento del menú desplegable accesible desde Code Behind.

¿Ves este fragmento?

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

Tenga en cuenta que agregué 2 atributos:id="myDropdownMenu" y runat="servidor" .

Después de esto, puede ir a Code Behind para comenzar a completar el menú desde una fuente de datos.

Al menos hay 2 formas de hacer esto, que yo sepa.

Manipulando el InnerHtml propiedad, así:

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

O agregando el menú como los controles secundarios , así:

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

Tú decides cuál elegir.

Por cierto, solo para completar este ejemplo, puede intentar llamar a uno de esos métodos desde Page_Load evento, como este:

EDITAR:

Por su solicitud, modifiqué las muestras agregando una conexión a una tabla en una base de datos. Entonces, este es el módulo para cargar los datos:

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

Y así es como debe llamar al módulo:

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

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

Ah, y recuerda importar estas dos bibliotecas para que esta muestra funcione:

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

Espero que ayude.