ASP.NET2.0 新增控制項-BulletedList
來源:互聯網
上載者:User
asp.net|控制項 BulletedList是一個讓你輕鬆在頁面上顯示項目符號和編號格式(Bulledted List)的控制項。對於ASP.NET 1.x裡要動態顯示Bulledted List時,要麼自己利用HTML的<ol>或<ul>元素構造,要麼就是“殺雞用牛刀”的動用Repeater來顯示。前者過於死板,後者過於overkill,也許微軟聽到這種聲音,於是ASP.NET 2.0總算搞了個BulletedList出來了。這控制項雖然給人不太多注意,但卻看得出微軟確實是在乎“使用者需求”的。BulletedList控制項的主要屬性有BulletStyle、DisplayMode、Items和主要事件Click。l BulletStyle:項目符號編號樣式值,對應著System.Web.UI.WebControls.BulletStyle枚舉類型值。其共有以下10種選擇項:1. Circle:表示項目符號編號樣式設定為“○”空圈圈。2. CustomImage:表示項目符號編號樣式設定為自訂圖片,其圖片由BulletImageUrl屬性指定。3. Disc:表示項目符號編號樣式設定為“●”實圈圈。4. LowerAlpha:表示項目符號編號樣式設定為小寫字母格式。如a、b、c、d等26個小寫英文字母。5. LowerRoman:表示項目符號編號樣式設定為小寫羅馬數字格式。如i、ii、iii、iv等小寫羅馬數字。6. NotSet:表示不設定項目符號編號樣式。此時將以Disc樣式為預設樣式顯示。7. Numbered:表示設定項目符號編號樣式為數字格式。如1、2、3、4等數字格式。8. Square:表示設定項目符號編號樣式為“■”實體黑方塊。9. UpperAlpha:表示設定項目符號編號樣式為大寫字母格式。如A、B、C、D等26個大寫英文字母。10. UpperRoman:表示設定項目符號編號樣式為大寫羅馬數字格式。如I、II、III、IV等大寫的羅馬數字。l DisplayMode:顧名思義為顯示模式,對應著System.Web.UI.WebControls.BulletedListDisplayMode枚舉類型值。其共有以下三種選擇項:1. Text:表示以純文字形式來表現項目列表。2. HyperLink:表示以超連結形式來表現項目列表。連結文字為某個具體項ListItem的Text屬性,連結目標為ListItem的Value屬性。3. LinkButton:表示以伺服器控制項LinkButton形式來表現項目列表。此時每個ListItem項都將表現為LinkButton,同時以Click事件回傳到伺服器端進行相應操作。l Items:該屬性對應著System.Web.UI.WebControls.ListItem對象集合。項目符號編號清單中的每一個項均對應一個ListItem對象。ListItem對象有四個主要屬性:? Enabled:該項是否處於啟用狀態。預設為True。? Selected:該項是否處於選定狀態。預設為True。? Text:該項的顯示文本。? Value:該項的值。l Click:該事件在BulletedList控制項的DisplayMode處於LinkButton模式下,並BulletedList控制項中的某項被點擊時觸發。觸發時將被點擊項在所有項目列表中的索引號(從0開始)作為傳回參數傳回伺服器端。 對於各種BulletStyle,這裡只列出一張截圖供觀看,看了就明白各種BulletStyle在實際中的樣子了。 同樣,下面以三種DisplayMode情況作三個簡單樣本,以便更好理解BulletedList的各種屬性方法和應用。
1.
Text
顯示模式:此種模式最為簡單,僅僅提供項目列表的顯示而以。其表現代碼為: <asp:BulletedList ID="BulletedList1" BulletStyle="Circle" runat="server"> <asp:ListItem>Item #1</asp:ListItem> <asp:ListItem>Item #2</asp:ListItem> <asp:ListItem Text="Item #3"></asp:ListItem> <asp:ListItem Text="Item #4" Value="Item #4"></asp:ListItem> </asp:BulletedList>當然,也可以通過資料繫結來實現資料顯示,做法類似下面HyperLink的資料繫結操作。
2.
LinkButton
顯示模式:這裡只簡要說明其資料繫結的資料顯示操作。 <asp:BulletedList ID="BulletedList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="ProductName" DataValueField="ProductID" DisplayMode="LinkButton"> </asp:BulletedList> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT TOP 10 [ProductID], [ProductName] FROM [Products]"> </asp:SqlDataSource>
3.
HyperLink
顯示模式:XmlDataSource作為資料來源綁定到BulletedList控制項相對於SqlDataSource來說,要繁瑣點。XmlDataSource和SqlDataSource都屬於新增的資料來源控制項,在後面會再作介紹。 假設一份XML資料:<?xml version="1.0" encoding="utf-8" ?><QuickLinks> <QuickLink> <Name>Whidbey @ ASP.NET</Name> <Url>http://www.asp.net/Whidbey</Url> </QuickLink> <QuickLink> <Name>ASP.NET Dev Center</Name> <Url>http://msdn.microsoft.com/asp.net/</Url> </QuickLink> <QuickLink> <Name>.NET WebLogs @ ASP.NET</Name> <Url>http://weblogs.asp.net</Url> </QuickLink> <QuickLink> <Name>ASP.NET Web Matrix</Name> <Url>http://asp.net/WebMatrix</Url> </QuickLink></QuickLinks> 對應這份XML檔案的XSL代碼為:<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="QuickLinks"> <QuickLinks> <xsl:apply-templates select="QuickLink"/> </QuickLinks> </xsl:template> <xsl:template match="QuickLink"> <QuickLink> <xsl:attribute name="Name"> <xsl:value-of select="Name"/> </xsl:attribute> <xsl:attribute name="Url"> <xsl:value-of select="Url"/> </xsl:attribute> <xsl:apply-templates/> </QuickLink> </xsl:template></xsl:stylesheet>此時將這份XML檔案綁定到BulletedList控制項上: <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/NavigateMenu.xml" TransformFile="~/NavigateMenu.xsl" XPath="QuickLinks/QuickLink"></asp:XmlDataSource> <asp:BulletedList ID="BulletedList1" runat="server" DataSourceID="XmlDataSource1" DataTextField="Name" DataValueField="Url" DisplayMode="HyperLink"> </asp:BulletedList>可以從上面看到XmlDataSource除了DataFile,還需要TransformFile和需要指定XPath才能作為正常資料來源被綁定到BulletedList中(其他諸如DropDownList等綁定XmlDataSource時,做法也類似。在介紹XmlDataSource會進一步說明,這裡先暖暖身)。 [總結]:誠如我在開頭所說的那樣,對於ASP.NET 1.x裡要動態顯示項目編號符號列表時,要麼自己利用HTML的<ol>或<ul>元素構造,要麼就是“殺雞用牛刀”的動用Repeater來顯示。前者過於死板,後者過於overkill。而BulletedList屬於“中庸”路線,恰到好處的控制項,多一分則過火,少一分則不足。