我有一个服务以字符串格式返回xmlData:
<CourseSearchDataSet xmlns="http:/www.tempuri.org/CourseSearchDataSet.xsd">
<Course>
<CourseId>9e980791</CourseId>
<CourseName>Library and Information Solutions</CourseName>
<CourseDesc>Overview of Library</CourseDesc>
</Course>
<Course>
<CourseId>f3e59e56</CourseId>
<CourseName>Power Link Intro</CourseName>
<CourseDesc>This course</CourseDesc>
</Course>
</CourseSearchDataSet>
在运行时,我正在尝试使用xmlDataSource将此数据绑定到GridView。
我在设计时定义了一个grid和dataSource:
<asp:GridView runat="server" ID="grdCourses" XPath="Course/">
<Columns>
<asp:TemplateField HeaderText="Id">
<ItemTemplate>
<%# XPath("CourseId") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:XmlDataSource runat="server" ID="xmlDataSource"></asp:XmlDataSource>
在设计时我将数据分配给xmlDataSource并将xmlDataSource分配给grid:
xmlDataSource.EnableCaching = false;
xmlDataSource.DataFile = courseList;
grdCourses.DataSourceID = "xmlDataSource";
(“courseList”是一个保存服务结果的字符串。)
网格已绑定到xmldDataSource,但它没有显示CourseId(在templateField中定义的字段,没有错误,只有空白列。
我指的是这个教程:http://goo.gl/mUHkYm 我不想使用DATASET,因为它很乱,需要手动处理很多事件。
任何帮助都将受到高度赞赏。
提前致谢。 维沙尔
答案 0 :(得分:0)
我认为这只是导致问题的命名空间,请尝试以下代码。
protected void Page_Load(object sender, EventArgs e)
{
XPathDocument document = new XPathDocument(@"D:\xxxx\xxx\xx\xxx\test.xml");
XPathNavigator navigator = document.CreateNavigator();
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("bk", "http:/www.tempuri.org/CourseSearchDataSet.xsd");
}
ASPX:
<form id="form1" runat="server">
<div>
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="/test.xml">
</asp:XmlDataSource>
<asp:GridView runat="server" ID="grdCourses" AutoGenerateColumns="false" XPath="bk:courseSearchDataSet/bk:Course" DataSourceID="XmlDataSource1">
<Columns>
<asp:TemplateField HeaderText="Id">
<ItemTemplate>
<%# XPath("CourseId") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
答案 1 :(得分:0)
如果您有XML字符串数据而不是XML文件,则应通过设置XmlDataSource
属性而不是Data
将XML字符串绑定到DataFile
:
xmlDataSource.EnableCaching = false;
xmlDataSource.Data = courseList;
grdCourses.DataSourceID = "xmlDataSource";
dataSource.XPath = "....";
dataSource.DataBind();