ASP.NET Tutorial/XML/DataGrid
Содержание
Binding XML data to DataGrid (VB.net)
<source lang="csharp">
<%@ 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 & """
" output.Text += "Columns count " & _ "= " & xmldoc.DataSet.Tables(i).Columns.Count. _ ToString() & "
" 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() & "
" 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></source>
Save data from DataGrid to XML
<source lang="csharp">
<%@ 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">
Data from SQL Server
<asp:DataGrid id="Datagrid1" runat="server" HeaderStyle-Font-Bold="true"></asp:DataGrid>
Data from the XML file
<asp:DataGrid id="Datagrid2" runat="server" HeaderStyle-Font-Bold="true"></asp:DataGrid>
</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></source>
Use DataGrid to edit data in XML (VB.net)
<source lang="csharp">
<%@ 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>
<asp:Button id="update" runat="server" OnClick="UpdateBtn_Click" text="Update!" />
</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></source>