2016-01-07 44 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> 
相關問題