我在ASP.NET中有一个项目符号列表,其DisplayMode设置为HyperLink。渲染控件时,链接显示完美,但另外我想为每个锚标签设置标题。我该怎么做?
aspx文件:
<asp:BulletedList ID="BL1" runat="server" DisplayMode="HyperLink" DataTextField="AnchorText" DataValueField="URL" />
文件后面的代码:
在代码隐藏文件中,我将BL1
与列表进行数据绑定。
List<UrlData> listOfUrls
。
其中UrlData类有三个公共属性
class UrlData
{
public string URL {get; set;}
public string AnchorText {get; set;}
public string TitleText {get; set;}
//public UrlData to initialise properties
}
答案 0 :(得分:1)
您应该使用转发器:
绑定数据源:
protected void Page_Load(object sender, EventArgs e)
{
rprUrls.DataSource = listOfUrls;
rprUrls.DataBind();
}
您的转发器将如下所示:
<asp:Repeater ID = "rprUrls" runat="server">
<HeaderTemplate><ul></HeaderTemplate>
<ItemTemplate>
<li><%# string.Format("<a href=\"{0}\" title=\"{2}\">{1}</a>", Eval("URL").ToString(), Eval("AnchorText").ToString(), Eval("TitleText").ToString()) %></li>
</ItemTemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>
答案 1 :(得分:1)
您有两种选择: -
选项1:
循环浏览BulletedList中的项目并添加title
属性,如下所示: -
protected void Page_PreRender(object sender, EventArgs e)
{
foreach (ListItem item in BL1.Items)
{
item.Attributes["title"] = GetToolTip(item.Value);
}
}
显然,您必须再次调用数据源才能获得相应的工具提示: -
private string GetToolTip(string url)
{
return UrlDataList().First(x => x.URL == url).TitleText;
}
假设UrlDataList()
将返回您List<UrlData>
绑定的BL1
。显然,这不是最好的方法,因为我们两次查询数据。
选项2:
您可以使用转发器控件(推荐方式)创建相同的行为: -
<asp:Repeater ID="rptDemo" runat="server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<%# String.Format("<a href=\"{0}\" title=\"{1}\">{2}</a>",Eval("ID"),Eval("Salary"),Eval("Country")) %>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
简单地绑定它: -
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
rptDemo.DataSource = UrlDataList();
rptDemo.DataBind();
}
}