2016-01-07 27 views
1

已呈现的锚定标记的标题我在DisplayMode设置为HyperLink的ASP.NET中有一个项目符号列表。当控件呈现时,链接显示完美,但另外我想为每个锚标签设置标题。我该怎么做呢?如何设置<asp:BulletedList 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

请分享你如何填充'BulletedList' – Prabhat

回答

1

Yo u有两种选择: -

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

@ihimv - 你有机会看看我的答案吗? –

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> 
相关问题