【问题标题】:How to set title of rendered anchor tags for <asp:BulletedList DisplayMode="HyperLink"/>如何为 <asp:BulletedList DisplayMode="HyperLink"/> 设置渲染锚标签的标题
【发布时间】:2016-04-11 22:59:06
【问题描述】:

我在 ASP.NET 中有一个项目符号列表,其 DisplayMode 设置为 HyperLink。呈现控件时,链接显示得非常好,但另外我想为每个锚标记设置标题。我该怎么做?

aspx 文件:

<asp:BulletedList ID="BL1" runat="server" DisplayMode="HyperLink" DataTextField="AnchorText" DataValueField="URL" />

文件后面的代码: 在文件后面的代码中,我将BL1 与列表进行数据绑定。

List&lt;UrlData&gt; listOfUrls.

其中 UrlData 类具有三个公共属性

class UrlData
{
     public string URL {get; set;}
     public string AnchorText {get; set;}
     public string TitleText {get; set;}

    //public UrlData to initialise properties
}

【问题讨论】:

  • 请分享你是如何填充BulletedList

标签: c# asp.net


【解决方案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() 将返回您绑定到BL1 的List&lt;UrlData&gt;。显然这不是最好的方法,因为我们要查询数据两次。

选项 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();
   }
}

【讨论】:

  • @ihimv - 你有机会看看我的答案吗?
【解决方案2】:

你应该使用中继器:

绑定数据源:

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-24
    • 2016-04-23
    • 2015-04-21
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 2016-12-14
    相关资源
    最近更新 更多