如何设置<;asp:BulletedList显示模式=“;HyperLink”/>;

本文关键字:模式 显示 gt HyperLink BulletedList asp 何设置 设置 lt | 更新日期: 2023-09-27 18:29:18

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

aspx文件:

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

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

CCD_ 2。

其中UrlData类有三个公共属性

class UrlData
{
     public string URL {get; set;}
     public string AnchorText {get; set;}
     public string TitleText {get; set;}
    //public UrlData to initialise properties
}

如何设置<;asp:BulletedList显示模式=“;HyperLink”/>;

您有两个选项:-

选项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()将返回您绑定到BL1List<UrlData>。显然,这不是最好的方法,因为我们要查询两次数据。

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

您应该使用中继器:

绑定数据源:

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>