我正在尝试显示所有下达的订单,并且我有一个主要的accessdatasource控件,它有一个select查询来获取客户信息和orderID。我想使用第一个查询中的orderID值作为辅助accessdatasource控件的参数,该控件选择订单中产品的产品信息。用简单的英语,我想: - 从产品表中选择产品信息,其中orderID =? (其中?是第一个查询的orderID值)
我已经尝试了<%#Eval(“OrderID”)%>但我得到一个“服务器标签形成不良”的错误,但是当我输入订单ID时,我确实得到了结果,但显然每个结果(订单)只包含相同的产品信息......
<asp:Repeater ID="Repeater1" runat="server"
DataSourceID="AccessDataSource1">
<ItemTemplate>
<asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/App_Data/project.mdb" SelectCommand="SELECT orderDetails.OrderID, album.Artist, album.Album, album.Cost, album.ImageURL, orderDetails.Quantity, orderDetails.Total FROM (album INNER JOIN orderDetails ON album.AlbumID = orderDetails.AlbumID) WHERE (orderDetails.OrderID = ? )">
<SelectParameters>
// Error is on this line
<asp:Parameter Name="OrderID" DefaultValue="<%#Eval ("OrderID")%>" />
</SelectParameters>
</asp:AccessDataSource>
<div class="viewAllOrdersOrderArea">
<div class="viewAllOrdersOrderSummary">
<p><b>Order ID: </b><%#Eval("OrderID")%></p>
<h4>Shipping Details</h4>
<p><b>Shipping Address: </b><%#Eval("ShippingName")%>, <%#Eval("ShippingAddress")%>, <%#Eval("ShippingTown")%>, <%#Eval("ShippingPostcode")%></p>
<h4>Payment Details</h4>
<p><b>Cardholder's Address: </b><%#Eval("CardHolder")%>, <%#Eval("BillingAddress")%>, <%#Eval("BillingTown")%>, <%#Eval("BillingPostcode")%></p>
<p><b>Payment Method: </b><%#Eval("CardType")%></p>
<p><b>Card Number: </b><%#Eval("CardNumber")%></p>
<p><b>Start Date: </b><%#Eval("StartDate")%>, Expiry Date: <%#Eval("ExpiryDate")%></p>
<p><b>Security Digits: </b><%#Eval("SecurityDigits")%></p>
<h4>Ordered items:</h4>
<asp:Repeater ID="Repeater2" runat="server"
DataSourceID="AccessDataSource2">
<ItemTemplate>
<div style="display: block; float: left;">
<div class="viewAllOrdersProductImage">
<img width="70px" height="70px" alt="<%# Eval("Artist") %> - <%# Eval("Album") %>" src="assets/images/thumbs/<%# Eval("ImageURL") %>" />
</div>
<div style="display:block; float:left; padding-top:15px; padding-right:20px;"><p><b><%# Eval("Artist") %> - <%# Eval("Album") %></b></p>
<p>£<%# Eval("Cost") %> x <%# Eval("Quantity") %> = £<%#Eval("Total")%></p></div>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
答案 0 :(得分:0)
在Repeater ItemTemplate中,您可以创建一个HiddenField控件并将其值设置为&lt;%#Eval(“OrderID”)%&gt;。然后将此隐藏字段的控制参数添加到AccessDataSource2的Select Parameter集合。
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("OrderID") %>' />
<asp:AccessDataSource ID="AccessDataSource2" runat="server">
<SelectParameters>
<asp:ControlParameter ControlID="HiddenField1" PropertyName="Value" Type="Int32" />
</SelectParameters>
</asp:AccessDataSource>
此外,我认为您获得的错误可能是因为您使用了两次双引号。尝试Eval语句的服务器标签周围的单引号,就像我上面一样。