ASP.NET Tutorial/XML/GridView

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Load XML data to asp:GridView

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="XmlDataSet" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <div class="Box">
        <asp:Button ID="cmdXmlToDataSet" runat="server" Text="Read XML into DataSet" OnClick="cmdXmlToDataSet_Click" Width="184px" />
        <asp:GridView ID="gridData" runat="server" EnableViewState="False" ></asp:GridView>
        
    </div>
    </form>
</body>
</html>
File: Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Web.Configuration;
using System.Xml;
public partial class XmlDataSet : System.Web.UI.Page
{
  protected void cmdXmlToDataSet_Click(object sender, EventArgs e)
  {
    XmlDataDocument dataDoc = new XmlDataDocument();
    dataDoc.DataSet.ReadXmlSchema("Data.xsd");
    dataDoc.Load("Data.xml");
    gridData.DataSource = dataDoc.DataSet;
    gridData.DataBind();
  }
}
File: Data.xml
<?xml version="1.0" standalone="yes"?>
<SuperProProductList xmlns="yourURI" >
    <Product ID="1" Name="Chair">
        <Price>49.33</Price>
    </Product>
    <Product ID="2" Name="Car">
        <Price>43398.55</Price>
    </Product>
    <Product ID="3" Name="Fresh Fruit Basket">
        <Price>49.99</Price>
    </Product>
</SuperProProductList>
File: Data.xsd
<?xml version="1.0"?>
<xs:schema
    targetNamespace="yourURI"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"  >
  <xs:element name="SuperProProductList">
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:element name="Product">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Price" minOccurs="1" type="xs:double" />
            </xs:sequence>
            <xs:attribute name="ID" use="required" type="xs:int" />
            <xs:attribute name="Name" use="required"  type="xs:string" />
          </xs:complexType>
        </xs:element>
        </xs:sequence>
      </xs:complexType>
  </xs:element>
</xs:schema>


Nested GridView for display XML document

<%@ Page Language="C#" AutoEventWireup="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Nested Grids</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:XmlDataSource ID="sourceDVD" runat="server" DataFile="~/Data.xml"></asp:XmlDataSource>
        <asp:GridView ID="GridView1" 
                      runat="server" 
                      AutoGenerateColumns="False" 
                      DataSourceID="sourceDVD" 
                      BorderStyle="Groove" 
                      BorderWidth="2px" 
                      CellPadding="4" 
                      ForeColor="#333333" 
                      GridLines="None" 
                      Width="279px">
            <Columns>
                <asp:TemplateField HeaderText="DVD">
                <ItemTemplate>
                  <b><%#XPath("./Title")%></b><br />
                  <%#XPath("./Director")%><br />
                  <br /><i>Starring...</i><br />
                  <blockquote>
                  <asp:GridView id="GridView2" ShowHeader="False" GridLines="None" AutoGenerateColumns="False" DataSource="<%# XPathSelect("./Starring/Star") %>" runat="server">
                  <Columns>
                  <asp:TemplateField>
                  <ItemTemplate>
                  <%#XPath(".")%><br />
                  </ItemTemplate>
                  </asp:TemplateField>
                  </Columns>
                  </asp:GridView>
          </blockquote>
                  </ItemTemplate>
                </asp:TemplateField>
                
            </Columns>
            <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <RowStyle BackColor="#EFF3FB" />
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <EditRowStyle BackColor="#2461BF" />
            <AlternatingRowStyle BackColor="White" />
        </asp:GridView>
    
    </div>
    </form>
</body>
</html>
File: Data.xml
<?xml version="1.0"?>
<DvdList>
   <DVD ID="1" Category="Category 1">
      <Title>title 1</Title>
      <Director>directory 2</Director>
      <Price>1</Price>
      <Starring>
         <Star>star 1</Star>
         <Star>star 2</Star>
      </Starring>
   </DVD>
   <DVD ID="2" Category="Category 2">
      <Title>title 2</Title>
      <Director>directory 2</Director>
      <Price>2</Price>
      <Starring>
         <Star>star 3</Star>
         <Star>star 4</Star>
      </Starring>
   </DVD>
</DvdList>