【问题标题】:How to create submenu in html format from database?如何从数据库中创建 html 格式的子菜单?
【发布时间】:2015-10-01 07:49:32
【问题描述】:
<div id="menu">
<ul>
<li><a href="#">HOME</a></li>
<li><a href="#">ABOUT US</a></li>
<li><a href="#">PRODUCTS/a>
<ul>
<li><a href="#">Product1</a></li>
<li><a href="#">Product2</a></li>
<li><a href="#">Product3</a></li>
</ul>
</li>
</ul>
</div>
这是菜单代码,菜单项是静态的,我想从数据库中动态显示product1、product2、product3
【问题讨论】:
标签:
c#
asp.net
sql-server
submenu
【解决方案1】:
我认为最简单的方法是使用 repeater control 从服务器端绑定多个 <li> 标签。
如果您不想回发刷新菜单项,也可以使用 ajax 调用在客户端进行绑定。
代码:
这可能会帮助您了解一种从服务器端绑定它的方法........
ASPX
<ul>
<li><a href="#">HOME</a></li>
<li><a href="#">ABOUT US</a></li>
<ul>
<asp:Repeater ID="_rptSubMenu" runat="server">
<ItemTemplate>
<li><a href="#"><%Eval(ProductId) %> </a>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</ul>
CS
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
bindMenu();
}
public void bindMenu()
{
//ADO Code to get menu Items from Database
//You can load it directly form DataTable or you can create a LIST with Menu Entity as i have
string connectionstring = "";
List<MenuItem> lstMenu = new List<MenuItem>();
SqlConnection con = new SqlConnection(connectionstring);
SqlCommand cmd = new SqlCommand("SELECT Id,MenuName FROM TM_Menu", con);
SqlDataReader dr;
dr = cmd.ExecuteReader();
while (dr.Read())
{
lstMenu.Add(new MenuItem { ProductID = dr["Id"].ToString(), Name = dr["Name"].ToString() });
}
_rptSubMenu.DataSource = lstMenu;
_rptSubMenu.DataBind();
}
}
public class MenuItem
{
public string ProductID { get; set; }
public string Name { get; set; }
}
【解决方案2】:
试试这样的..
我的数据库是 ms sql,所以我们在数据库中检索数据的代码可能会有所不同
<div id="menu">
<ul>
<li><a href="#">HOME</a></li>
<li><a href="#">ABOUT US</a></li>
<li><a href="#">PRODUCTS/a>
<ul>
<li><a href="#">Product1</a></li>
<li><a href="#">Product2</a></li>
<li><a href="#">Product3</a></li>
<?php
$sqli = "select item from Rroducts ";
$stmt = sqlsrv_query( $conn, $sqli );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
$item= $row[' item'];
echo "<li><a href='#'>".$item."</a></li>";
}
sqlsrv_free_stmt( $stmt2;
?>
</ul>
</li>
</ul>