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
属于“中庸”路线,恰到好处的控件,多一分则过火,少一分则不足。
[
参考资料]:
1. MSDN Library for Visual Studio 2005 beta2