我是Bootstrap.i的新手,有一个填充通知下拉,如
<!-- BEGIN NOTIFICATION DROPDOWN -->
<li class="dropdown" id="notifications-header">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
<i class="glyph-icon flaticon-notifications"></i>
<span class="badge badge-danger badge-header">6</span>
</a>
<ul class="dropdown-menu">
<li class="dropdown-header clearfix">
<p class="pull-left">Notifications</p>
</li>
<li>
<ul class="dropdown-menu-list withScroll" data-height="220">
<li>
<a href="#">
<i class="fa fa-star p-r-10 f-18 c-orange"></i>
Steve have rated your photo
<span class="dropdown-time">Just now</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-heart p-r-10 f-18 c-red"></i>
John added you to his favs
<span class="dropdown-time">15 mins</span>
</a>
</li>
等等 现在,我如何使用数据库动态填充此下拉列表?
答案 0 :(得分:1)
以下是答案......我只是介绍了它的工作原理......任何人都可以使用适合他们的数据结构。
(1)在数据库中,我创建了一个名为&#34;的通知&#34;与三个领域 (a)friend_name;存储给你发消息的朋友的名字 (b)中通知;存储原始邮件 (3)notification_time;存储发消息的时间
(2)在后面的代码中,我创建了3个Lists对象和一个存储消息计数的整数
(a)friend_name;存储给你发消息的朋友的名字 (b)中通知;存储原始邮件 (c)中notification_time;存储一个消息给你的时间 (d)数量;存储消息计数。 private List friend_name = new List(); private List notification_time = new List(); private list notification_time = new List();
(3)现在我在页面加载中填充这些列表,这对于开发人员来说是常见的... conn = new SqlConnection(&#34; Data Source = XXXX; Initial Catalog = XXXX; Integrated Security = True&#34;); SqlCommand comm = new SqlCommand(&#34; select * from notifications&#34;); comm.Connection = conn; comm.CommandType = CommandType.Text; SqlDataReader阅读器; conn.Open(); reader = comm.ExecuteReader();
while (reader.Read())
{
friend_name.Add(reader["friend_name"].ToString());
notifications.Add(reader["notifications"].ToString());
notification_time.Add(reader["notification_time"].ToString());
count++;
}
(4)现在转到aspx文件(标记)并调用三个列表对象...... &lt;%for(int i = 0; i 的&#39;&LT;%= FRIEND_NAME [I]%GT;&#39; 强> &#39;&LT;%= Notification_Time [I]%GT;&#39;
&#39;&LT;%=声明[I]%GT;&#39; ...
<% } %>
最后,您将能够动态填充引导程序。
答案 1 :(得分:0)
注意:我正在使用您的答案作为参考,我在此过程中做了一些假设,正在编辑
你有表,sql查询。 (你应该真正研究实体框架,而不是做常规的SQL查询。实体框架是读取/保存数据到数据库时的新风格。)
您应该创建一个可以包含表中数据的新类。类似的东西:
public class Notification
{
public string FriendName {get;set;}
public string Notification {get;set;}
public DateTime Date {get;set;} // assuming you have a valid datetime that can be parsed.
}
在Page_Load
事件中,您可以进行一些修改。
在这里,我们将来自阅读器的所有数据放入Notification
对象中,我们将这些对象放入List<Notification>
,然后我们最后将数据绑定到转发器,转发器将负责呈现所需的输出。注意:在SqlConnection
中包装SqlCommand
,SqlReader
,using()
将在使用后处理它们,并释放资源。
string connectionString = "Data Source=XXXX;Initial Catalog=XXXX;Integrated Security=True";
string sqlQuery = "Select * from notifications";
List<Notification> notifications = new List<Notification>();
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand comm = new SqlCommand(sqlQuery, conn))
{
comm.CommandType = CommandType.Text;
using (SqlDataReader reader = comm.ExecuteReader())
{
while (reader.Read())
{
Notification notification = new Notification();
notification.FriendName = reader["friend_name"].ToString();
notification.Notification = reader["notifications"].ToString();
notification.Date = reader["notification_time"].ToString();
notifications.Add(notification);
}
}
}
}
DropDownItems.DataSource = notifications;
DropDownItems.DataBind();
您要求的元素是asp:Repeater
,您可以添加DataSource
和DataBind
。要重复下拉列表中的元素,您可以这样做:(注意:我假设friend_name是项目名称,通知是网址。)
<asp:Repeater ID="DropDownItems" runat="server">
<HeaderTemplate>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
</HeaderTemplate>
<ItemTemplate>
<li role="presentation">
<a role="menuitem" tabindex="-1" href="<%# Eval("Notification") %>"><%# Eval("FriendName") %></a>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:repeater>
TL; DR:在webforms标记(aspx)中使用asp:Repeater而不是常规for循环。