我有一些像这样的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
TreeNodeBinding
。我已经研究了使用ASP进行XML绑定的基础知识,但是没有多少工作经过{{1}}(这不是我需要的)。
感谢。
答案 0 :(得分:1)
有很多方法可以做到这一点。但是,我建议您使用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;
}
}
}
希望这有帮助。