当前位置:编程学习 > asp >>

使用 ASP+ 列表绑定控件(下)

答案:     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):转换编程思维

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,