日期:2013-11-01  浏览次数:20459 次

DataGrid 控件
DataGrid 控件使您可以生成数据源格式丰富的列表表示。此外,它还支持随其它操作选择项目。

本节的四个示例使用包含有关书名信息(标题、标题 ID、作者、价格和出版日期)的表。全部数据都用 TitlesDB.xml 中的 XML 予以维持。在建立页面来表示此表的内容并选择书籍时,这些示例遵循增量方法。代码列表包含黑体文本,以表明一个示例构建于以前示例时所作的更改。

截自 TitlesDB.xml:

<root>
<schema id="DocumentElement" targetNamespace=""
        xmlns=http://www.w3.org/1999/XMLSchema
        xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <element name="Title">
        <complexType content="elementOnly">
            <element name="title_id" type="string"></element>
            <element name="title" type="string"></element>
            <element name="au_name" type="string"></element>
            <element name="price" msdata:DataType="System.Currency"
                     minOccurs="0"
                     type="string"></element>
            <element name="pubdate" type="timeInstant"></element>
        </complexType>
        <unique name="TitleConstraint" msdata:PrimaryKey="True">
            <selector>.</selector>
            <field>title_id</field>
        </unique>
    </element>
</schema>
<DocumentElement>
    <Title>
        <title_id>BU1032</title_id>
        <title>The Busy Executive's Database Guide</title>
        <au_name>Marjorie Green</au_name>
        <price>19.99</price>
        <pubdate>1991-06-12T07:00:00</pubdate>
    </Title>
    ...
</DocumentElement>
</root>

在典型的 Web 应用程序中,为了获得最大的可伸缩性和性能上的好处,很可能会使用 Web 服务或商业对象来存取数据。为了简化这些示例并将注意力集中在使用 DataGrid 而不是数据存取上,我们选择在应用程序启动时一次性加载数据,并在 Global.asax 中的 ASP 应用程序状态中高速缓存所得的 DataSet,如下所示。

截自 Global.asax:

public void Application_OnStart() {
    FileStream fs = null;
    DataSet ds = null;

    try {
        fs = new FileStream(Server.MapPath("TitlesDB.xml"), FileMode.Open,
                            FileAccess.Read);
        ds = new DataSet();

        // 将 xml 文件中的数据加载到 DataSet 中
       &nb