我在SQL中有一个表,它显示以下数据:
LOCATION LINK TAGS
New Rochelle nr.htm 5
Purchase pr.htm 3
Rye ry.htm 8
Scarsdale sc.htm 2
White Plains wp.htm 9
Yonkers qw.htm 5
我在页面中设置了以下<asp:Repeater>
:
<asp:Repeater ID="menu_ul_1" runat="server">
<HeaderTemplate>
<ul class="my-menu ulLocation" id="ulLocation_selector">
</HeaderTemplate>
<ItemTemplate>
<li class="active">
<a class="large btn" href='<%# Eval("href_li")%>'>
<span class="check"><i class="icon icon-ok"></i></span>
<span class="name"><%# Eval("DisplayText")%></span>
<span class="count"><%# Eval("DisplayQty")%></span>
</a>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
以下C#代码:
protected void Page_Load(object sender, EventArgs e)
{
/****************** THE BELOW IS GENERATING UL > LI ******************/
DataTable newsDataTable = new DataTable();
// add some columns to our datatable
newsDataTable.Columns.Add("href_li");
newsDataTable.Columns.Add("DisplayText");
for (int i = 1; i <= 5; i++) {
DataRow newsDataRow = newsDataTable.NewRow();
newsDataRow["href_li"] = "?sc=item_" + i;
newsDataRow["DisplayText"] = "List Item # "+i;
newsDataTable.Rows.Add(newsDataRow);
}
menu_ul_1.DataSource = newsDataTable;
menu_ul_1.DataBind();
}
如何修改上面的代码,而不是使用内部for循环,我可以使用SQL表中的行数并填写以下值:
'<%# Eval("href_li")%>' = LOCATION
'<%# Eval("DisplayText")%>' = LINK
'<%# Eval("DisplayQty")%>' = TAGS
答案 0 :(得分:1)
您是否只是询问如何遍历数据行?像这样:
foreach DataRow lobjDataRow in dsLocation.Tables[0].Rows
{
DataRow newsDataRow = newsDataTable.NewRow();
newsDataRow["href_li"] = lobjDataRow["Location"] ;
newsDataRow["DisplayText"] = lobjDataRow["Link"] ;
newsDataTable.Rows.Add(newsDataRow);
}
答案 1 :(得分:0)
OleDbDataReader
是将数据库信息加载到asp:Repeater
的合适方式。读者可以直接绑定到转发器作为数据源。
string connectionString = "< your connection string >";
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "SELECT LOCATION, LINK, TAGS FROM [dbo].[NewsTable]";
command.CommandType = CommandType.Text;
using (OleDbDataReader reader = command.ExecuteReader())
{
menu_ul_1.DataSource = reader;
menu_ul_1.DataBind();
}
}
在ItemTemplate
中,查询中的列名应提供给Eval
表达式。
<a class="large btn" href='<%# Eval("LINK")%>'>
<span class="check"><i class="icon icon-ok"></i></span>
<span class="name"><%# Eval("LOCATION")%></span>
<span class="count"><%# Eval("TAGS")%></span>
</a>