我有一个使用XMLDataSource的Repeater Control来产生一个电影列表(Movies.aspx)。我需要通过查询参数链接到详细页面,如MovieDetails.aspx?movie = Matrix。我在MovieDetails.aspx页面上使用什么控件来渲染单个影片,最好使用ItemTemplate和我自己的HTML。
我的数据来源:
<asp:XmlDataSource ID="MoviesXmlDataSource" runat="server"
DataFile="~/Movies.xml" XPath="movies/movie"></asp:XmlDataSource>
我阅读了StackOverflow帖子Send string with QueryString in Repeater Control in ASP.net并通过这样的转发器列出了我的项目:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="MoviesXmlDataSource">
<HeaderTemplate>
<ul class="productlist">
</HeaderTemplate>
<ItemTemplate>
<li>
<a href="MovieDetails.aspx?movie=<%#Eval("title")%>"></a>
<img src="Images/<%#Eval("image") %>" /><br/>
<b><%#Eval("title") %></b>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
在我的MovieDetail.aspx上,我按预期获得了查询字符串参数。但是,我不知道如何从我的XMLDataSource获取此项并很好地呈现它。我想出了如何使用GridView执行此操作,然后根据您在网格中单击的内容呈现DetailsView,但它太丑了。 Repeater允许我指定自己的HTML,但仅用于列表而不是单个项目。
答案 0 :(得分:0)
Repeater控件的整体思想是以一致的方式显示一组数据。您应用的HTML实际上是项目列表中的单个项目。如果我是你,我将使用table to display the items。一列中的标题,另一列中的图像,另一列中的详细信息等。或者您可以使用
Title
--------
Image | Description Line 1
| Description Line 2
| Description Line 3
| Description Line 4
--------
Title
--------
Image | Description Line 1
| Description Line 2
| Description Line 3
| Description Line 4
--------
方法
唯一阻止你获得一个很好的电影列表的是HTML(你已经知道)和创造力的知识!让你的想象力疯狂;)
答案 1 :(得分:0)
我自己就是这么想的。我没有意识到我可以从后面的代码中简单地访问我的XMLDataSource。我没有将它绑定到任何控件。这是我的解决方案:
在aspx中,渲染普通HTML并插入&lt;%= title%&gt;等等...
protected void Page_Load(object sender, EventArgs e)
{
this.movieTitle = Request["movie"];
string xpath = String.Format("/movies/movie[@title=\"{0}\"]", movieTitle);
XmlDocument doc = MoviesXmlDataSource.GetXmlDocument();
XmlNode node = doc.SelectSingleNode(xpath);
this.title = node.Attributes["title"].Value;
this.description = node.Attributes["description"].Value;
this.image = node.Attributes["image"].Value;
}
在aspx中我正常渲染东西:
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:XmlDataSource ID="MoviesXmlDataSource" runat="server"
DataFile="~/Movies.xml" XPath="movies/movie">
</asp:XmlDataSource>
<h1><%=title %></h1>
<p>
<img src="<%=image %>"/><br />
<%=description %>
</p>
</asp:Content>
最后这很简单。我只是因为强迫自己使用控件而感到困惑。