Repeater嵌套DataGrid显示XML内容

swalia1 2009-08-01 01:56:56

<?xml version="1.0" encoding="GB2312" ?>
<PropertyLineItem>
<Name>广州白云机场酒店</Name>
<TEL>020-36068866</TEL>
<HotelFeatures>
<TrafficInfo>距离 机场 0.2公里 步行3分钟</TrafficInfo>
<BasicInfo>2007年开业。2007年装修</BasicInfo>
</HotelFeatures>
<RoomRateDetail>
<RoomName>豪华商务客房</RoomName>
<SaleRate>918.0</SaleRate>
</RoomRateDetail>
<RoomRateDetail>
<RoomName>高级客房</RoomName>
<SaleRate>518.0</SaleRate>
</RoomRateDetail>
</PropertyLineItem>
<PropertyLineItem>
<Name>中国酒店</Name>
<TEL>020-36068866</TEL>
<HotelFeatures>
<TrafficInfo>距离 机场 1.2公里 </TrafficInfo>
<BasicInfo>2000年开业。2003年装修</BasicInfo>
</HotelFeatures>
<RoomRateDetail>
<RoomName>豪华房</RoomName>
<SaleRate>880.0</SaleRate>
</RoomRateDetail>
<RoomRateDetail>
<RoomName>标准房</RoomName>
<SaleRate>780.0</SaleRate>
</RoomRateDetail>
</PropertyLineItem>

POST回来得到以上数据
我把<PropertyLineItem>之间的数据用Repeater来显示,<RoomRateDetail>之间的用DataGrid来嵌在Repeater中显示
应该怎么处理DataGrid中显示的数据
<PropertyLineItem>之间的数据用Repeater来显示为什么显示不了<TrafficInfo>距离 机场 1.2公里 </TrafficInfo>
<BasicInfo>2000年开业。2003年装修</BasicInfo>这两个数据,提示System.Data.DataRowView不含TrafficInfo和BasicInfo
...全文
140 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
swalia1 2009-08-01
  • 打赏
  • 举报
回复
好的,我试一下谢谢您
cpp2017 2009-08-01
  • 打赏
  • 举报
回复
<asp:GridView ID="g1" runat="server"></asp:GridView>
cpp2017 2009-08-01
  • 打赏
  • 举报
回复
先把xml按我上面的改一下。

然后:

DataSet ds = new DataSet();
XmlDocument dom = new XmlDocument();
dom.Load(Server.MapPath("~/a.xml"));
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("TEL");
dt.Columns.Add("TrafficInfo");
dt.Columns.Add("BasicInfo");
dt.Columns.Add("RoomName");
dt.Columns.Add("SaleRate");
XmlNodeList nl = dom.SelectNodes("//PropertyLineItem");


for (int i = 0; i < nl.Count; i++)
{
DataRow row = dt.NewRow();
XmlNode node = nl.Item(i);
row["Name"] = node.ChildNodes[0].InnerText;
row["TEL"] = node.ChildNodes[1].InnerText;

row["TrafficInfo"] = node.ChildNodes[2].ChildNodes[0].InnerText;
row["BasicInfo"] = node.ChildNodes[2].ChildNodes[1].InnerText;
row["RoomName"] = node.ChildNodes[3].ChildNodes[0].InnerText;
row["SaleRate"] = node.ChildNodes[3].ChildNodes[1].InnerText;
dt.Rows.Add(row);
DataRow row1 = dt.NewRow();

row1["RoomName"] = node.ChildNodes[4].ChildNodes[0].InnerText;
row1["SaleRate"] = node.ChildNodes[4].ChildNodes[1].InnerText;
dt.Rows.Add(row1);
}

this.g1.DataSource = dt.DefaultView;
this.g1.DataBind();
cpp2017 2009-08-01
  • 打赏
  • 举报
回复
==
swalia1 2009-08-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cpp2017 的回复:]
你这个xml文件要加个根元素,现在有两个根了。

<?xml version="1.0" encoding="gb2312" ?>
<root>
  <PropertyLineItem>
    <Name>广州白云机场酒店 </Name>     </PropertyLineItem>
</root>

[/Quote]您有没有Q我加您帮帮我谢谢!
swalia1 2009-08-01
  • 打赏
  • 举报
回复
应该怎么处理啊。XML第一次遇到
cpp2017 2009-08-01
  • 打赏
  • 举报
回复
你这个xml文件要加个根元素,现在有两个根了。

<?xml version="1.0" encoding="gb2312" ?>
<root>
<PropertyLineItem>
<Name>广州白云机场酒店</Name>
<TEL>020-36068866</TEL>
<HotelFeatures>
<TrafficInfo>距离 机场 0.2公里 步行3分钟</TrafficInfo>
<BasicInfo>2007年开业。2007年装修</BasicInfo>
</HotelFeatures>
<RoomRateDetail>
<RoomName>豪华商务客房</RoomName>
<SaleRate>918.0</SaleRate>
</RoomRateDetail>
<RoomRateDetail>
<RoomName>高级客房</RoomName>
<SaleRate>518.0</SaleRate>
</RoomRateDetail>
</PropertyLineItem>
<PropertyLineItem>
<Name>中国酒店</Name>
<TEL>020-36068866</TEL>
<HotelFeatures>
<TrafficInfo>距离 机场 1.2公里 </TrafficInfo>
<BasicInfo>2000年开业。2003年装修</BasicInfo>
</HotelFeatures>
<RoomRateDetail>
<RoomName>豪华房</RoomName>
<SaleRate>880.0</SaleRate>
</RoomRateDetail>
<RoomRateDetail>
<RoomName>标准房</RoomName>
<SaleRate>780.0</SaleRate>
</RoomRateDetail>
</PropertyLineItem>
</root>
swalia1 2009-08-01
  • 打赏
  • 举报
回复
怎么没有回???可以有尝帮忙。。。在线等
cpp2017 2009-08-01
  • 打赏
  • 举报
回复
dom.LoadXml(str);
wuyq11 2009-08-01
  • 打赏
  • 举报
回复
不要使用数据集,定义实体类,遍历XML获取属性值
通过list<T>添加到实体类集合.
public static List<T> XmlToObjList<T>(string xml,string headtag)
where T : new()
{
List<T> list = new List<T>();
XmlDocument doc = new XmlDocument();
PropertyInfo[] propinfos = null;
doc.LoadXml(xml);
XmlNodeList nodelist = doc.SelectNodes("/" + headtag + "/PropertyLineItem");
foreach (XmlNode node in nodelist)
{
T entity = new T();
//初始化propertyinfo
if (propinfos == null)
{
Type objtype = entity.GetType();
propinfos = objtype.GetProperties();
}
//填充entity类的属性
foreach (PropertyInfo propinfo in propinfos)
{
XmlNode cnode = node.SelectSingleNode(propinfo.Name);
string v = cnode.InnerText;
if (v != null)
propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);
}
list.Add(entity);
}
return list;
}
swalia1 2009-08-01
  • 打赏
  • 举报
回复
XmlDocument dom = new XmlDocument();
dom.Load(Server.MapPath("~/a.xml"));
怎么转换成
StreamReader streamRead = new StreamReader(streamResponse, encode);
传回来的值?

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧