如何为<asp:bulletedlist displaymode =“HyperLink”>设置渲染锚标记的标题

时间:2016-01-07 14:02:45

标签: c# asp.net

我在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
}

2 个答案:

答案 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();
   }
}