Best approach to bind data from XML to an asp:Table

  • Thread starter Thread starter Greg Linwood
  • Start date Start date
G

Greg Linwood

I am wondering what the best approach to binding XML data to an asp:Table
from the Page_Load event in a code behind module?

I'm using VB.Net and initially approached this by adding a table to the web
page from the VS2003 ASP page designer, extracting an XML document from SQL
Server during Page_Load, then adding asp:TableRows & asp:TableCells one at a
time / loading the corresponding xml values a cell at a time.

Is there a better (less code / maintenance) approach?

Regards,
Greg Linwood
SQL Server MVP
 
bind it directly to a datagrid, it renders a table as its output
automatically.

--
Regards

John Timney (Microsoft ASP.NET MVP)
----------------------------------------------
<shameless_author_plug>
Professional .NET for Java Developers with C#
ISBN:1-861007-91-4
Professional Windows Forms
ISBN: 1861005547
Professional JSP 2nd Edition
ISBN: 1861004958
Professional JSP
ISBN: 1861003625
Beginning JSP Web Development
ISBN: 1861002092
</shameless_author_plug>
 
I found an example of how to bind array data to a datagrid, but haven't seen
anything on how to bind XML directly to a datagrid.

Are there any examples you could point out for me that bind xml directly to
datagrid John?

Or do you have to have a function that iterates the xml & converts it to the
array for binding?

Regards,
Greg Linwood
SQL Server MVP
 
Greg,

See below

--
Regards

John Timney (Microsoft ASP.NET MVP)
----------------------------------------------
<shameless_author_plug>
Professional .NET for Java Developers with C#
ISBN:1-861007-91-4
Professional Windows Forms
ISBN: 1861005547
Professional JSP 2nd Edition
ISBN: 1861004958
Professional JSP
ISBN: 1861003625
Beginning JSP Web Development
ISBN: 1861002092
</shameless_author_plug>
----------------------------------------------

The XML file (test.xml)

<Elements>
<Links>
<Text>Wrox Press</Text>
<Link>http://www.wrox.com</Link>
</Links>
<Links>
<Text>Microsoft</Text>
<Link>http://www.microsoft.com</Link>
</Links>
<Links>
<Text>Amazon</Text>
<Link>http://www.amazon.com</Link>
</Links>
</Elements>


<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.IO" %>

<html>
<script runat="server">

string SortExpression;

DataView getData(){

DataSet ds = new DataSet();
FileStream fs = new FileStream( Server.MapPath("test.xml"),
FileMode.Open, FileAccess.Read );
StreamReader reader = new StreamReader( fs );
ds.ReadXml( reader );
fs.Close();

DataView dv = new DataView(ds.Tables[0] );
dv.Sort=SortExpression;
return dv;

}


void Page_Load(Object sender, EventArgs e)
{

ItemsGrid.DataSource=getData();
ItemsGrid.DataBind();

}


void Sort_Grid(object sender, DataGridSortCommandEventArgs e){

SortExpression = e.SortExpression.ToString();
ItemsGrid.DataSource = getData();
ItemsGrid.DataBind();
}


</script>

<body>

<form runat="server">

<h3>DataGrid Example</h3>

<b>Product List</b>

<asp:DataGrid id="ItemsGrid"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
HeaderStyle-BackColor="#00aaaa"
AutoGenerateColumns="true"
AllowSorting="true"
OnSortCommand="Sort_Grid"
runat="server">

</asp:DataGrid>

</form>

</body>
</html>
 
Thanks John

That's what I'm after.

Regards,
Greg Linwood
SQL Server MVP

John Timney (Microsoft MVP) said:
Greg,

See below

--
Regards

John Timney (Microsoft ASP.NET MVP)
----------------------------------------------
<shameless_author_plug>
Professional .NET for Java Developers with C#
ISBN:1-861007-91-4
Professional Windows Forms
ISBN: 1861005547
Professional JSP 2nd Edition
ISBN: 1861004958
Professional JSP
ISBN: 1861003625
Beginning JSP Web Development
ISBN: 1861002092
</shameless_author_plug>
----------------------------------------------

The XML file (test.xml)

<Elements>
<Links>
<Text>Wrox Press</Text>
<Link>http://www.wrox.com</Link>
</Links>
<Links>
<Text>Microsoft</Text>
<Link>http://www.microsoft.com</Link>
</Links>
<Links>
<Text>Amazon</Text>
<Link>http://www.amazon.com</Link>
</Links>
</Elements>


<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.IO" %>

<html>
<script runat="server">

string SortExpression;

DataView getData(){

DataSet ds = new DataSet();
FileStream fs = new FileStream( Server.MapPath("test.xml"),
FileMode.Open, FileAccess.Read );
StreamReader reader = new StreamReader( fs );
ds.ReadXml( reader );
fs.Close();

DataView dv = new DataView(ds.Tables[0] );
dv.Sort=SortExpression;
return dv;

}


void Page_Load(Object sender, EventArgs e)
{

ItemsGrid.DataSource=getData();
ItemsGrid.DataBind();

}


void Sort_Grid(object sender, DataGridSortCommandEventArgs e){

SortExpression = e.SortExpression.ToString();
ItemsGrid.DataSource = getData();
ItemsGrid.DataBind();
}


</script>

<body>

<form runat="server">

<h3>DataGrid Example</h3>

<b>Product List</b>

<asp:DataGrid id="ItemsGrid"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
HeaderStyle-BackColor="#00aaaa"
AutoGenerateColumns="true"
AllowSorting="true"
OnSortCommand="Sort_Grid"
runat="server">

</asp:DataGrid>

</form>

</body>
</html>


Greg Linwood said:
I found an example of how to bind array data to a datagrid, but haven't seen
anything on how to bind XML directly to a datagrid.

Are there any examples you could point out for me that bind xml directly to
datagrid John?

Or do you have to have a function that iterates the xml & converts it to the
array for binding?

Regards,
Greg Linwood
SQL Server MVP

one
 
Back
Top