【发布时间】:2010-11-17 21:12:06
【问题描述】:
我的问题很简单。这就是我的 aspx 页面:
<ul>
<asp:Repeater runat="server" ID="linksList" OnItemDataBound="linksList_OnItemDataBound" >
<ItemTemplate>
<li><asp:HyperLink runat="server" ID="link" /></li>
</ItemTemplate>
</asp:Repeater>
</ul>
我正在尝试将超链接列表从 SQL 服务器获取到列表中。这就是我在代码隐藏中的内容:
protected void Page_Load(object sender, EventArgs e)
{
DataSet ds = Utilities.RunSelectQuery("SELECT *");
DataTable dt = ds.Tables[0];
linksList.DataSource = dt;
linksList.DataBind();
}
数据绑定到Repeater 后,如何更改asp:HyperLink 中的NavigateUrl 和Text 属性?我想在代码隐藏中执行此操作,如果我在 aspx 页面中使用 <%# Eval("URL") %> 执行此操作,我可以让它工作,但这有点违背 ASP.NET 的全部意义。
编辑:感谢 womp,这是对我有用的解决方案:
protected void linksList_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView row = (DataRowView)e.Item.DataItem;
HyperLink link = (HyperLink)e.Item.FindControl("link");
link.Text = row["description"].ToString();
link.NavigateUrl = row["URL"].ToString();
}
}
【问题讨论】:
标签: asp.net controls repeater code-behind pageload