ASP.NET Tutorial/XML/DataGrid
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>