WebFormsでそれを行うにはいくつかの方法がありますが、最初に DIVを作成する必要があります コードビハインドからアクセスできるドロップダウンメニューの要素。
このスニペットを参照してください?
<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>
2つの属性を追加したことに注意してください: id ="myDropdownMenu" およびrunat="server" 。
この後、コードビハインドに移動できます データソースからメニューへの入力を開始します。
私の知る限り、これを行うには少なくとも2つの方法があります。
InnerHtmlを操作する このようなプロパティ:
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;
}
または、子コントロールとしてメニューを追加します 、このように:
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);
}
}
どちらを選ぶかはあなたの電話です。
ところで、この例を完了するために、 Page_Loadからこれらのメソッドの1つを呼び出そうとすることができます。 このようなイベント:
編集:
ご要望により、データベース内のテーブルへの接続を追加してサンプルを変更しました。したがって、これはデータをロードするためのモジュールです:
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;
}
モジュールの呼び出し方法は次のとおりです:
protected void Page_Load(object sender, EventArgs e)
{
var menu = LoadMenuFromTable();
DisplayMenuByAddingChildControls(menu);
// or DisplayMenuByConstructingHtmlTags(menu);
}
ああ、このサンプルを機能させるために、これら2つのライブラリをインポートすることを忘れないでください:
using System.Configuration;
using System.Data.SqlClient;
お役に立てば幸いです。