【发布时间】:2011-12-07 22:09:19
【问题描述】:
我有一个 XmlDataSouce 与电影和演员。我想列出指定演员的每部电影。我将ListView 控件与ClientIDMode="Predictable" 和ClientIDRowSuffix 一起使用,以确保最终得到可以在我的javascript 中使用的ID。
我有以下XmlDataSource:
<asp:XmlDataSource ID="XmlDataSource1" runat="server">
<Data>
<Movies>
<Movie Name="What Dreams May Come" Ranking="7" MovieId="6546" >
<Actor FullName="Robin Williams" ActorId="1573" />
<Actor FullName="Cuba Gooding" ActorId="1957" />
</Movie>
<Movie Name="A Beautiful Mind" Ranking="10" MovieId="5151" >
<Actor FullName="Russell Crowe" ActorId="1231" />
<Actor FullName="Ed Harris " ActorId="1923" />
</Movie>
</Movies>
</Data>
</asp:XmlDataSource>
现在我想查看它:
<asp:ListView ID="ListView1" runat="server" ClientIDMode="Predictable"
ClientIDRowSuffix="MovieId" DataSourceID="XmlDataSource1">
<ItemTemplate>
<div id="item" runat="server" clientidmode="Predictable">
Name: <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>' /><br />
Actors:
<asp:ListView ID="Actors" runat="server"
ClientIDMode="Predictable" ClientIDRowSuffix="ActorId"
DataSource='<%# XPathSelect("Actor") %>' />
<ItemTemplate>
<asp:Label ID="lblActorName" runat="server"
Text='<%# XPath("@FullName") %>' />
</ItemTemplate>
<LayoutTemplate>
<asp:PlaceHolder id="itemPlaceholder" runat="server" />
</LayoutTemplate>
<ItemSeparatorTemplate>,</ItemSeparatorTemplate>
</asp:ListView>
<br /><br />
</div>
</ItemTemplate>
<LayoutTemplate>
<asp:PlaceHolder id="itemPlaceholder" runat="server" />
</LayoutTemplate>
</asp:ListView>
看起来不错,但是会抛出以下异常:
DataBinding:“System.Xml.XmlElement”不包含具有 名称“ActorId”。
如何设置正确的ClientIDRowSuffix?
非常感谢您的评论。
附言。我用过<%# Eval() %>,但那个绑定到电影记录。
【问题讨论】:
-
@HenkHolterman:是的,我试过了。它抛出了同样的异常,'不包含名为'@ActorId'的属性
标签: c# asp.net xpath datasource asp.net-4.0