XML数据如下:
<Detail>
<AirCompany>中国国际航空公司</AirCompany>
<Flight>CA1412</Flight>
<Model>73G</Model>
<FlyTime>0740</FlyTime>
<ArrivalTime>0955</ArrivalTime>
<E>E</E>
<Tax>50</Tax>
<YPrice>1560</YPrice>
<Class>
<ClassCode>F</ClassCode>
<Code>头等舱</Code>
<Num>>9张</Num>
<Price>2340</Price>
</Class>
<Class>
<ClassCode>Y</ClassCode>
<Code>经济舱</Code>
<Num>>9张</Num>
<Price>1560</Price>
</Class>
</Detail>
<Detail>
<AirCompany>中国国际航空公司</AirCompany>
<Flight>CA4137</Flight>
<Model>737</Model>
<FlyTime>0840</FlyTime>
<ArrivalTime>1045</ArrivalTime>
<E>E</E>
<Tax>50</Tax>
<YPrice>1560</YPrice>
<Class>
<ClassCode>T</ClassCode>
<Code>5.5折</Code>
<Num>>9张</Num>
<Price>860</Price>
</Class>
<Class>
<ClassCode>X</ClassCode>
<Code>5折</Code>
<Num>>9张</Num>
<Price>780</Price>
</Class>
</Detail>
<Detail>
<Detail>
<AirCompany>中国国际航空公司</AirCompany>
<Flight>CA1412</Flight>
<Model>73G</Model>
<FlyTime>0740</FlyTime>
<ArrivalTime>0955</ArrivalTime>
<E>E</E>
<Tax>50</Tax>
<YPrice>1560</YPrice>
<Class>
<ClassCode>F</ClassCode>
<Code>头等舱</Code>
<Num>>9张</Num>
<Price>2340</Price>
</Class>
<Class>
<ClassCode>Y</ClassCode>
<Code>经济舱</Code>
<Num>>9张</Num>
<Price>1560</Price>
</Class>
</Detail>
<Detail>
<AirCompany>中国国际航空公司</AirCompany>
<Flight>CA4137</Flight>
<Model>737</Model>
<FlyTime>0840</FlyTime>
<ArrivalTime>1045</ArrivalTime>
<E>E</E>
<Tax>50</Tax>
<YPrice>1560</YPrice>
<Class>
<ClassCode>T</ClassCode>
<Code>5.5折</Code>
<Num>>9张</Num>
<Price>860</Price>
</Class>
<Class>
<ClassCode>X</ClassCode>
<Code>5折</Code>
<Num>>9张</Num>
<Price>780</Price>
</Class>
</Detail>
<Detail>
解决方案 »
- WCF 传输 大数据问题
- ListBox问题,标题要长~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
- 今天VSS连接是出现这个错误该怎么办?高手进来看看
- VS2005自带的SQL2005Expresss能不能卸载
- SOS!请教asp.net 邮件发送的例子报错!
- 关于asp.net中发送异步请求?难!分不够还可以加。
- C#中怎样进行忽略大小写的替换?
- 本地ie 浏览器中 有服务器ie浏览器,用asp.net有谁能实现?
- 把Excel数据读到DataGrid 中来的问题,请各位指点。
- 请教微软大哥及各位大侠!错误信息:在单一线程模式下,试图在一个以上线程上进行呼叫。
- 关于分页的问题
- gridview镶套怎么取得父Gridview的datakeys value啊?
_a.aspx
=====================
<%@ Page language="c#" Codebehind="_a.aspx.cs" AutoEventWireup="false" Inherits="ChinaEdustar.Web.__a" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<body>
<form id="FrmDataGrid" method="post" runat="server">
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn HeaderText="航班">
<ItemTemplate>
<asp:Label id="LB1" text='<%# DataBinder.Eval(Container.DataItem, "Flight") %>' Runat="server">
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="明细">
<ItemTemplate>
<asp:DataGrid ID="DataGrid2" runat="server" AutoGenerateColumns="True"></asp:DataGrid>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</HTML>
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml; public class __a : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{ XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("a.xml"));
XmlNodeList ns = doc.SelectNodes("//Detail/Flight");
DataTable table = new DataTable("ParentTable");
DataColumn column;
DataRow row; column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = true;
column.Unique = true;
table.Columns.Add(column);
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Flight";
column.AutoIncrement = false;
column.Caption = "Flight";
column.ReadOnly = false;
column.Unique = false;
table.Columns.Add(column); DataColumn[] PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = table.Columns["id"];
table.PrimaryKey = PrimaryKeyColumns;
for (int i = 0; i <ns.Count; i++)
{
row = table.NewRow();
row["id"] = i;
row["Flight"] = ns[i].InnerText;
table.Rows.Add(row);
} DataGrid1.DataSource=table;
DataGrid1.DataBind();
} private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
System.Data.DataRowView drv =(System.Data.DataRowView)e.Item.DataItem; string fs = drv.Row["Flight"].ToString(); XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("a.xml")); XmlNodeList ns = doc.SelectNodes("//Detail[Flight='" + fs + "']/Class");
DataTable table = new DataTable("ChildTable");
DataColumn column;
DataRow row;
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "ClassCode";
table.Columns.Add(column); column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Code";
table.Columns.Add(column); column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Num";
table.Columns.Add(column); column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Price";
table.Columns.Add(column);
for (int i = 0; i <ns.Count; i++)
{
row = table.NewRow();
row["ClassCode"] = ns[i].ChildNodes[0].InnerText;
row["Code"] = ns[i].ChildNodes[1].InnerText;
row["Num"] = ns[i].ChildNodes[2].InnerText;
row["Price"] = ns[i].ChildNodes[3].InnerText;
table.Rows.Add(row);
} DataGrid dg = (DataGrid)e.Item.FindControl("DataGrid2");
dg.DataSource=table;
dg.DataBind();
}
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
(只是例子,没有做优化)