转自MS.Tech
BulletedList是一个让你轻松在页面上显示项目符号和编号格式(Bulledted List)的控件。对于ASP.NET 1.x里要动态显示Bulledted List时,要么自己利用HTML的<ol>或<ul>元素构造,要么就是“杀鸡用牛刀”的动用Repeater来显示。前者过于死板,后者过于overkill,也许微软听到这种声音,于是ASP.NET 2.0总算搞了个BulletedList出来了。这控件虽然给人不太多注意,但却看得出微软确实是在乎“用户需求”的。BulletedList控件的主要属性有BulletStyle、DisplayMode、Items和主要事件Click。<o:p></o:p>
<o:p> </o:p>
l BulletStyle:项目符号编号样式值,对应着System.Web.UI.WebControls.BulletStyle枚举类型值。其共有以下10种选择项:<o:p></o:p>
1. Circle:表示项目符号编号样式设置为“○”空圈圈。<o:p></o:p>
2. CustomImage:表示项目符号编号样式设置为自定义图片,其图片由BulletImageUrl属性指定。<o:p></o:p>
3. Disc:表示项目符号编号样式设置为“●”实圈圈。<o:p></o:p>
4. LowerAlpha:表示项目符号编号样式设置为小写字母格式。如a、b、c、d等26个小写英文字母。<o:p></o:p>
5. LowerRoman:表示项目符号编号样式设置为小写罗马数字格式。如i、ii、iii、iv等小写的罗马数字。<o:p></o:p>
6. NotSet:表示不设置项目符号编号样式。此时将以Disc样式为默认样式显示。<o:p></o:p>
7. Numbered:表示设置项目符号编号样式为数字格式。如1、2、3、4等数字格式。<o:p></o:p>
8. Square:表示设置项目符号编号样式为“■”实体黑方块。<o:p></o:p>
9. UpperAlpha:表示设置项目符号编号样式为大写字母格式。如A、B、C、D等26个大写英文字母。<o:p></o:p>
10. UpperRoman:表示设置项目符号编号样式为大写罗马数字格式。如I、II、III、IV等大写的罗马数字。<o:p></o:p>
l DisplayMode:顾名思义为显示模式,对应着System.Web.UI.WebControls.BulletedListDisplayMode枚举类型值。其共有以下三种选择项:<o:p></o:p>
1. Text:表示以纯文本形式来表现项目列表。<o:p></o:p>
2. HyperLink:表示以超链接形式来表现项目列表。链接文字为某个具体项ListItem的Text属性,链接目标为ListItem的Value属性。<o:p></o:p>
3. LinkButton:表示以服务器控件LinkButton形式来表现项目列表。此时每个ListItem项都将表现为LinkButton,同时以Click事件回发到服务器端进行相应操作。<o:p></o:p>
l Items:该属性对应着System.Web.UI.WebControls.ListItem对象集合。项目符号编号列表中的每一个项均对应一个ListItem对象。ListItem对象有四个主要属性:<o:p></o:p>
? Enabled:该项是否处于激活状态。默认为True。<o:p></o:p>
? Selected:该项是否处于选定状态。默认为True。<o:p></o:p>
? Text:该项的显示文本。<o:p></o:p>
? Value:该项的值。<o:p></o:p>
l Click:该事件在BulletedList控件的DisplayMode处于LinkButton模式下,并BulletedList控件中的某项被点击时触发。触发时将被点击项在所有项目列表中的索引号(从0开始)作为传回参数传回服务器端。<o:p></o:p>
<o:p> </o:p>
对于各种BulletStyle,这里只列出一张截图供观看,看了就明白各种BulletStyle在实际中的样子了。<o:p></o:p>
<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><o:p></o:p>
<o:p> </o:p>
同样,下面以三种DisplayMode情况作三个简单示例,以便更好理解BulletedList的各种属性方法和应用。<o:p></o:p>
<o:p> </o:p>
1. Text显示模式:<o:p></o:p>
此种模式最为简单,仅仅提供项目列表的显示而以。其表现代码为:<o:p></o:p>
<asp:BulletedList ID="BulletedList1" BulletStyle="Circle" runat="server"><o:p></o:p>
<asp:ListItem>Item #1</asp:ListItem><o:p></o:p>
<asp:ListItem>Item #2</asp:ListItem><o:p></o:p>
<asp:ListItem Text="Item #3"></asp:ListItem><o:p></o:p>
<asp:ListItem Text="Item #4" Value="Item #4"></asp:ListItem><o:p></o:p>
</asp:BulletedList><o:p></o:p>
当然,也可以通过数据绑定来实现数据显示,做法类似下面HyperLink的数据绑定操作。<o:p></o:p>
<o:p> </o:p>
2. LinkButton显示模式:<o:p></o:p>
这里只简要说明其数据绑定的数据显示操作。<o:p></o:p>
<asp:BulletedList ID="BulletedList1" runat="server" DataSourceID="SqlDataSource1"<o:p></o:p>
DataTextField="ProductName" DataValueField="ProductID" DisplayMode="LinkButton"><o:p></o:p>
</asp:BulletedList><o:p></o:p>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"<o:p></o:p>
SelectCommand="SELECT TOP 10 [ProductID], [ProductName] FROM [Products]"><o:p></o:p>
</asp:SqlDataSource><o:p></o:p>
3. HyperLink显示模式:<o:p></o:p>
XmlDataSource作为数据源绑定到BulletedList控件相对于SqlDataSource来说,要繁琐点。XmlDataSource和SqlDataSource都属于新增的数据源控件,在后面会再作介绍。<o:p></o:p>
假设一份XML数据:<o:p></o:p>
<?xml version="1.0" encoding="utf-8" ?><o:p></o:p>
<QuickLinks><o:p></o:p>
<QuickLink><o:p></o:p>
<Name>Whidbey @ ASP.NET</Name><o:p></o:p>
<Url>http://www.asp.net/Whidbey</Url><o:p></o:p>
</QuickLink><o:p></o:p>
<QuickLink><o:p></o:p>
<Name><st1:place w:st="on"><st1:placename w:st="on">ASP.NET</st1:placename> <st1:placename w:st="on">Dev</st1:placename> <st1:placetype w:st="on">Center</st1:placetype></st1:place></Name><o:p></o:p>
<Url>http://msdn.microsoft.com/asp.net/</Url><o:p></o:p>
</QuickLink><o:p></o:p>
<QuickLink><o:p></o:p>
<Name>.NET WebLogs @ ASP.NET</Name><o:p></o:p>
<Url>http://weblogs.asp.net</Url><o:p></o:p>
</QuickLink><o:p></o:p>
<QuickLink><o:p></o:p>
<Name>ASP.NET Web Matrix</Name><o:p></o:p>
<Url>http://asp.net/WebMatrix</Url><o:p></o:p>
</QuickLink><o:p></o:p>
</QuickLinks><o:p></o:p>
对应这份XML文件的XSL代码为:<o:p></o:p>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><o:p></o:p>
<xsl:template match="QuickLinks"><o:p></o:p>
<QuickLinks><o:p></o:p>
<xsl:apply-templates select="QuickLink"/><o:p></o:p>
</QuickLinks><o:p></o:p>
</xsl:template><o:p></o:p>
<xsl:template match="QuickLink"><o:p></o:p>
<QuickLink><o:p></o:p>
<xsl:attribute name="Name"><o:p></o:p>
<xsl:value-of select="Name"/><o:p></o:p>
</xsl:attribute><o:p></o:p>
</