【发布时间】:2012-09-14 08:35:10
【问题描述】:
我有一个带有数据集和 gridview 的 ASP 站点,我想显示 XML 数据。
gridview 不是自动生成的,它被设置为查找hotelid、name、status、city & country。
目前,我已经手动编写了 XML,但是我已经包含了此 XML 中需要的包装器标签和其他错误标签,但是每当包含它们时,就会出现一个错误,指出 gridview 无法找到“HOTEL_ID”属性.无需额外数据即可正常工作。
XML 示例:
<REQUEST><ACTION>HOTEL_LIST</ACTION><RESPONSE><RESULT>0</RESULT>
<HOTELS>
<HOTEL><HOTELID>hot01</HOTELID><NAME>hotel test 1</NAME><CITY>birmingham</CITY><COUNTRY>england</COUNTRY><STATUS>active</STATUS></HOTEL>
<HOTEL><HOTELID>hot02</HOTELID><NAME>hotelabctestabc2abc</NAME><CITY>barca</CITY><COUNTRY>spain</COUNTRY><STATUS>inactive</STATUS></HOTEL>
<HOTEL><HOTELID>hot03</HOTELID><NAME>hotelabctestabcire</NAME><CITY>dublin</CITY><COUNTRY>ireland</COUNTRY><STATUS>active</STATUS></HOTEL>
</HOTELS>
<ERRORS><ERROR><CODE></CODE><MESSAGE></MESSAGE></ERROR></ERRORS></RESPONSE></REQUEST>`
这是 VB 代码:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim teststring As String = "THE XML SHOWN ABOVE"
Dim ds As New DataSet()
Dim doc As New XmlDocument()
doc.LoadXml(teststring)
ds.ReadXml(New System.IO.StringReader(doc.OuterXml))
GridView1.DataSource = ds
GridView1.DataBind()
End Sub
`
如果我删除只留下唯一的酒店信息,它会起作用并找到该属性;
<HOTELS><HOTEL><HOTELID>hot01</HOTELID><NAME>hotel test 1</NAME><CITY>birmingham</CITY><COUNTRY>england</COUNTRY><STATUS>active</STATUS></HOTEL>
<HOTEL><HOTELID>hot02</HOTELID><NAME>hotelabctestabc2abc</NAME><CITY>barca</CITY><COUNTRY>spain</COUNTRY><STATUS>inactive</STATUS></HOTEL><HOTEL>
<HOTELID>hot03</HOTELID><NAME>hotelabctestabcire</NAME><CITY>dublin</CITY><COUNTRY>ireland</COUNTRY><STATUS>active</STATUS></HOTEL></HOTELS>
我做错了什么?
谢谢。
【问题讨论】:
-
在不删除其他数据的情况下,您的 DataSet 包含多少个表?
-
我希望您的酒店信息在其中一张表中,因此您需要将数据源更改为
GridView.DataSource = ds.Tables(index_of_table_which_contains_data) -
哦,哇,解决了 :) 是表号。 3 非常感谢,非常感谢 :)