ASP.NET Tutorial/XML/DataGrid — различия между версиями

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

Версия 15:30, 26 мая 2010

Binding XML data to DataGrid (VB.net)

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script runat=server>
   private i, j as integer
   sub Page_Load(Sender as Object, e as EventArgs)
      dim xmldoc as new XmlDataDocument()
         
         xmldoc.DataSet.ReadXml(Server.MapPath("Data.xml"))
         
         DataGrid1.DataSource = xmldoc.DataSet
         DataGrid1.DataMember = xmldoc.DataSet.Tables(0).TableName
         DataGrid2.DataSource = xmldoc.DataSet
         DataGrid2.DataMember = xmldoc.DataSet.Tables(1).TableName
         
         DataGrid1.DataBind()
         DataGrid2.DataBind()
         
         For i = 0 To xmldoc.DataSet.Tables.Count - 1
            output.Text += "TableName = """ & _
               xmldoc.DataSet.Tables(i).TableName & """<br>"
            output.Text += "Columns count " & _
               "= " & xmldoc.DataSet.Tables(i).Columns.Count. _
                  ToString() & "<br>"
            For j = 0 To xmldoc.DataSet.Tables(i).Columns.Count-1
               output.Text += "ColumnName = """ & xmldoc.DataSet. _
                 Tables(i).Columns(j).ColumnName & """, " & _
                 "type = " & xmldoc.DataSet.Tables(i). _
                 Columns(j).DataType.ToString() & "<br>"
            Next
         Next
         
         output.Text += ""
       
   end sub
</script>
<html><body>
   <asp:Label id="output" runat="server" />
   
   <asp:DataGrid id="DataGrid1" runat="server" 
         BorderColor="black" 
         GridLines="Vertical" 
         ItemStyle-BackColor="#ffffff"
         AlternatingItemStyle-Backcolor="#cccccc" />
   
   <asp:DataGrid id="DataGrid2" runat="server" 
         BorderColor="black" 
         GridLines="Vertical" 
         AlternatingItemStyle-Backcolor="#cccccc" />
</body>
</html>
File: Data.xml

<?xml version="1.0"?>
<bookstore>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
</bookstore>


Save data from DataGrid to XML

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="DataSetXml" %>
<!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>
    <H2>Data from SQL Server</H2>
      <asp:DataGrid id="Datagrid1" runat="server" HeaderStyle-Font-Bold="true"></asp:DataGrid><BR>
      <BR>
      <H2>Data from the XML file</H2>
      <asp:DataGrid id="Datagrid2" runat="server" HeaderStyle-Font-Bold="true"></asp:DataGrid>
    </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;
public partial class DataSetXml : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    string connectionString = WebConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;
    string sql = "SELECT TOP 5 EmployeeID, TitleOfCourtesy, LastName, FirstName FROM Employees";
    SqlConnection conn = new SqlConnection(connectionString);
    SqlDataAdapter da = new SqlDataAdapter(sql, conn);
    DataSet ds = new DataSet();
    da.Fill(ds, "Employees");
    Datagrid1.DataSource = ds.Tables["Employees"];
    Datagrid1.DataBind();
    string xmlFile = Server.MapPath("Employees.xml");
    ds.WriteXml(xmlFile, XmlWriteMode.WriteSchema);
    DataSet dsXml = new DataSet();
    dsXml.ReadXml(xmlFile);
    Datagrid2.DataSource = dsXml.Tables["Employees"];
    Datagrid2.DataBind();
    }
}
File: Web.config
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.ru/.NetConfiguration/v2.0">
  <appSettings/>
  <connectionStrings>
    <add name="Northwind" connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI"/>
  </connectionStrings>
  
</configuration>


Use DataGrid to edit data in XML (VB.net)

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script runat=server>
   private i, j as integer
   private strOutput as string = ""
   public xmldoc as new XMLDataDocument()
   
   sub Page_Load(Sender as Object, e as EventArgs)
      if not Page.IsPostBack then
         GetData()
         BindControl()
      end if
   end sub
   
   sub UpdateBtn_Click(Sender as Object, e as EventArgs)
      dim Title as TextBox
      dim Genre as TextBox
      dim Style as TextBox
      dim Price as TextBox
      
      GetData()
      
      "update data
      For i = 0 To DataGrid1.Items.Count-1
         Title = DataGrid1.Items(i).FindControl("Title")
         Genre = DataGrid1.Items(i).FindControl("Genre")
         Price = DataGrid1.Items(i).FindControl("Price")
      
         xmldoc.DataSet.Tables(0).Rows(i)("title") = Title.Text
         xmldoc.DataSet.Tables(0).Rows(i)("genre") = Genre.Text
         xmldoc.DataSet.Tables(0).Rows(i)("price") = Price.Text
      Next
      
      try
         xmldoc.Save(Server.MapPath("Data.xml"))
      catch
         output.Text = "Error updating data"
      end try
      
      BindControl()
   end sub
   
   sub GetData()
      try
         xmldoc.DataSet.ReadXml(Server.MapPath("Data.xml"))
      catch ex as Exception
         output.Text = "Error accessing XML file"
      end try
   end sub
   
   sub BindControl()
      DataGrid1.DataSource = xmldoc.DataSet
      DataGrid1.DataMember = xmldoc.DataSet.Tables(0).TableName
      DataGrid1.DataBind()
   end sub
</script>
<html><body>
   <asp:Label id="output" runat="server" />
   <form runat="server">
   <asp:DataGrid id="DataGrid1" runat="server" 
      BorderColor="black" 
      GridLines="Vertical" 
      HeaderStyle-BackColor="#cccc99"
      ItemStyle-BackColor="#ffffff"
      AlternatingItemStyle-Backcolor="#cccccc" 
      AutogenerateColumns="false" >
      <Columns>
         <asp:TemplateColumn HeaderText="Title">
            <ItemTemplate>
               <asp:TextBox id="Title" runat="server" 
                  Text="<%# Container.DataItem("title") %>" />
            </ItemTemplate>
         </asp:TemplateColumn>
         <asp:TemplateColumn HeaderText="Genre">
            <ItemTemplate>
               <asp:TextBox id="Genre" runat="server" 
                  Text="<%# Container.DataItem("genre") %>" 
                  width="75px" />
            </ItemTemplate>
         </asp:TemplateColumn>
         <asp:TemplateColumn HeaderText="Price">
            <ItemTemplate>
               <asp:TextBox id="Price" runat="server" 
                  Text="<%# Container.DataItem("price") %>"
                  width="50px" />
            </ItemTemplate>
         </asp:TemplateColumn>
      </Columns>     
   </asp:DataGrid>
   
   <center>
   <asp:Button id="update" runat="server"
      OnClick="UpdateBtn_Click"
      text="Update!" />
   </center>
   </form>
</body>
</html>
File: Data.xml
<?xml version="1.0"?>
<bookstore>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
  <book genre="asdf">
    <title>asdf</title>
    <author>
      <first-name>asdf</first-name>
      <last-name>asdf</last-name>
    </author>
    <price>asdf</price>
  </book>
</bookstore>