How to bind XML to a page in ASP?
本文关键字:to in ASP page bind XML How | 更新日期: 2023-09-27 18:29:05
我有一些类似的XML:
<?xml version="1.0" encoding="utf-8" ?>
<People>
<Person id="1">
<Name>
<FirstName>Manoj</FirstName>
<LastName>Syamala</LastName>
</Name>
</Person>
<Person id="2">
<Name>
<FirstName>Anthony</FirstName>
<LastName>Roberts</LastName>
</Name>
</Person>
</People>
我希望能够在C#ASPX页面上显示它。对此,最好的方法是什么?我想在一页上显示Person
和ID = 1
,然后按下下一个按钮,然后它用Person
和ID = 2
替换该数据。我已经研究了使用ASP进行XML绑定的基础知识,但在TreeNodeBinding
之后没有做太多工作(这不是我所需要的)。
谢谢。
有很多方法可以做到这一点。但是,我建议您使用带有分页功能的DataGrid
。将你的XML
作为DataSource
。等待示例代码。
好的,这是代码。
在aspx页面中创建一个GridView
,如下所示。请注意,此GridView有一个TemplateField
,因此您可以使用HTML
表格式化数据。
<asp:GridView ID="gvPeople" AllowPaging="True" runat="server"
AutoGenerateColumns="False" PageSize="1"
onpageindexchanging="gvPeople_PageIndexChanging">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<table border="0">
<tr>
</HeaderTemplate>
<ItemTemplate>
<td>Name: </td><td><%# Eval("Name.FullName") %></td>
</ItemTemplate>
<FooterTemplate>
</tr>
</table>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
你后面的代码应该像这个
using System;
using System.IO;
using System.Web.UI.WebControls;
using System.Xml.Serialization;
namespace ReadXMLData
{
public partial class ShowPeople : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadDataFromXML();
}
}
private void LoadDataFromXML()
{
// Loads XML data from an external XML file
XmlSerializer deserializer = new XmlSerializer(typeof(People));
TextReader textReader = new StreamReader(@"D:'Temp'People.xml");
People PeopleList = new People();
PeopleList = (People)deserializer.Deserialize(textReader);
textReader.Close();
gvPeople.DataSource = PeopleList;
gvPeople.DataBind();
}
protected void gvPeople_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
// GridView paging
gvPeople.PageIndex = e.NewPageIndex;
LoadDataFromXML();
}
}
}
下面是用于创建保存XML数据的对象的支持类。
using System;
using System.Collections.Generic;
namespace ReadXMLData
{
[Serializable]
[System.Xml.Serialization.XmlRoot("People")]
public class People : List<Person>
{
}
[Serializable]
public class Person
{
public Name Name { get; set; }
public Person()
{
this.Name = new Name();
}
}
[Serializable]
public class Name
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName
{
get
{
return this.FirstName + " " + this.LastName;
}
}
public Name()
{
this.FirstName = string.Empty;
this.LastName = string.Empty;
}
}
}
希望这能有所帮助。