答案: DataGrid3
DataGrid3通过添加可视格式化和内容格式化构建于DataGrid2之上。
摘自 DataGrid3.aspx:
〈%@ Page language="C#" src="DataGrid.cs" inherits="Samples.Data
GridPage"%〉
...
〈asp:DataGrid runat=server id="titlesGrid"
AutoGenerateColumns="false"
Width="80%"
BackColor="White"
BorderWidth="1px" BorderStyle="Solid" CellPadding="2" Cell
Spacing="0"
BorderColor="Tan"
Font-Name="宋体" Font-Size="8pt"〉
〈property name="Columns"〉
〈asp:BoundColumn headerText="Title" DataField="title"/〉
〈asp:BoundColumn headerText="Author" DataField="au_name"/〉
〈asp:BoundColumn headerText="Date Published" DataField=
"pubdate"
DataFormatString="{0:MMM yyyy}"/〉
〈asp:BoundColumn headerText="Price" DataField="price"
DataFormatString="{0:c}"〉
〈property name="ItemStyle"〉
〈asp:TableItemStyle HorizontalAlign="Right"/〉
〈/property〉
〈/asp:BoundColumn〉
〈/property〉
〈property name="headerStyle"〉
〈asp:TableItemStyle BackColor="DarkRed" ForeColor="White"
Font-Bold="true"/〉
〈/property〉
〈property name="ItemStyle"〉
〈asp:TableItemStyle ForeColor="DarkSlateBlue"/〉
〈/property〉
〈property name="AlternatingItemStyle"〉
〈asp:TableItemStyle BackColor="Beige"/〉
〈/property〉
〈/asp:DataGrid〉
此.aspx文件显示了与前面相同的DataGrid控件声明,并设置了各种
样式属性。这将导致视觉上更具吸引力的表示。仍就不需要对代码进行任
何更改,使用与以前示例相同的有代码支持的文件。
因为它是从 WebControl 得到的,所以 DataGrid 控件继承了诸如
Width、BackColor、BorderStyle 和 Font.Name 之类的样式属性。此外,
DataGrid提供诸如CellPadding这样的属性,这些属性是特定于表的。这
些属性允许从总体上定制控件。
声明还显示了设置的若干项目样式,如headerStyle和Alternating
ItemStyle。这些样式控制着它们相应项目的外观。请注意此示例中出现
的样式合并。备选项目与一般项目的前景色相同,因为它们的样式是
AlternatingItemStyle和ItemStyle的组合。最后,此示例还通过右对齐
价格列中的文本说明了为特定列设置样式。
DataGrid还允许您格式化其单元格中的文本内容。这是通过设置Bound
Column的DataFormatString属性值完成的。该列使用其格式说明格式化使
用 String.Format的单元格内容。此属性可随格式化类型(如日期或货币)
一起预置或附加任意内容。此外,由于格式化考虑了当前页的CultureInfo
和请求,所以它也支持全局化。如果未指定格式,则使用该值的ToString
方法。
DataGrid4
DataGrid4 说明如何通过处理 SelectedIndexChanged 事件来利用
DataGrid 中的选择。
截自 DataGrid4.aspx:
〈%@ Page language="C#" src="DataGrid4.cs" inherits="Samples.
DataGrid4Page"%〉
...
〈asp:DataGrid runat=server id="titlesGrid"
AutoGenerateColumns="false"
Width="80%"
BackColor="White"
BorderWidth="1px" BorderStyle="Solid" CellPadding="2"
CellSpacing="0"
BorderColor="Tan"
Font-Name="宋体" Font-Size="8pt"
DataKeyField="title_id"
OnSelectedIndexChanged="OnSelectedIndexChangedTitlesGrid"〉
〈property name="Columns"〉
〈asp:ButtonColumn Text="Select" Command="Select"/〉
〈asp:BoundColumn headerText="Title" DataField="title"/〉
〈asp:BoundColumn headerText="Author" DataField="au_name"/〉
〈asp:BoundColumn headerText="Date Published" DataField=
"pubdate"
DataFormatString="{0:MMM yyyy}"/〉
〈asp:BoundColumn headerText="Price" DataField="price"
DataFormatString="{0:c}"〉
〈property name="ItemStyle"〉
〈asp:TableItemStyle HorizontalAlign="Right"/〉
〈/property〉
〈/asp:BoundColumn〉
〈/property〉
〈property name="headerStyle"〉
〈asp:TableItemStyle BackColor="DarkRed" ForeColor="White"
Font-Bold="true"/〉
〈/property〉
〈property name="ItemStyle"〉
〈asp:TableItemStyle ForeColor="DarkSlateBlue"/〉
〈/property〉
〈property name="AlternatingItemStyle"〉
〈asp:TableItemStyle BackColor="Beige"/〉
〈/property〉
〈property name="SelectedItemStyle"〉
〈asp:TableItemStyle BackColor="PaleGoldenRod" Font-Bold=
"true"/〉
〈/property〉
〈/asp:DataGrid〉
...
〈asp:Label runat=server id="selectionInfoLabel" Font-Name="宋体"
Font-Size="8pt"/〉
在此.aspx文件中,为DataGrid的SelectedIndexChanged事件注册了
一个事件处理程序。此事件处理程序是在有代码支持的文件中实现的。已
在列集合中添加了一个命令为“Select”的 ButtonColumn,使得DataGrid
为每个项目表示一个包含Select按钮的附加列。同时指定了SelectedItem
Style。此样式用于从视觉上区分选定的项目。最后还指定了 DataGrid的
DataKeyField属性。此字段将置入DataGrid的DataKeys集合,该集合将在
有代码支持的文件中用到。
DataGrid4.cs:
namespace Samples {
...
public class DataGrid4Page : Page {
protected DataGrid titlesGrid;
protected Label selectionInfoLabel;
public ICollection GetTitlesList() {
// 从在应用程序状态中高速缓存的 DataSet 中检索标题列
表。
DataSet titlesDataSet = (DataSet)Application["Titles
DataSet"];
if (titlesDataSet != null) {
return titlesDataSet.Tables["Title"].DefaultView;
}
else {
return null;
}
}
private void LoadTitlesGrid() {
// 从数据库中检索数据
ICollection titlesList = GetTitlesList();
// 设置控件的数据源并重新设置其选择,
titlesGrid.DataSource = titlesList;
titlesGrid.SelectedIndex = -1;
// 并使该控件使用此数据源构建其项目
titlesGrid.DataBi
上一个:在ASP中利用“正则表达式” 对象实现UBB风格的论坛
下一个:ASP.NET高级教程(2.2):转换编程思维