2010-05-06 26 views
1

我試圖顯示所有放置的訂單,並且我有一個主要的accessdatasource控件,它具有select查詢以獲取客戶信息和orderID。我希望使用此第一個查詢中的orderID值作爲輔助訪問數據源控件的參數,用於選擇訂單中產品的產品信息。用簡單的英語,我想: - 從產品表中選擇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

裏面的中繼ItemTemplate中,你可以創建一個HiddenField控件並將其值設置到<%#Eval(「OrderID」)%>。然後爲該隱藏字段添加一個控制參數給AccessDataSource2的選擇參數集合。


<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語句的服務器標籤周圍的單引號,就像我上面的那樣。

相關問題