2011-08-01 58 views
0

我公司目前已與查詢字符串下面的語句設置爲產品分類我的ListView控件:如何在1個DataSource上添加多個SQL語句/查詢字符串?

SELECT * FROM Products WHERE (ProductCategory = ?) 

我想補充在同一個數據源這一說法,並查詢字符串,以允許產品型號查詢字符串,又怎麼能我這樣做?

SELECT * FROM Products WHERE (ProductModel = ?) 

的ListView

<asp:ListView runat="server" ID="listView" GroupItemCount="3" 
     DataSourceID="AccessDataSource1"> 
    <LayoutTemplate> 
     <div style="height: 966px;"> 
     <div style="width: 771px;"> 
      <asp:PlaceHolder runat="server" ID="groupPlaceHolder" /> 
     <asp:DataPager runat="server" ID="dpMyDatePager" PageSize="9" 
PagedControlID="listView"> 
<Fields> 
    <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" 
    ShowFirstPageButton="True" /> 
    <asp:NumericPagerField /> 
</Fields> 
</asp:DataPager> 
     </div> 
    </LayoutTemplate> 
    <GroupTemplate> 
     <div style="clear: both;"> 
      <asp:PlaceHolder runat="server" ID="itemPlaceHolder" /> 
     </div> 
    </GroupTemplate> 
    <ItemTemplate> 
<div class="productItem"> 
    <div> 
     <img src='<%# Eval("ProductUrl") %>' > 
    </div> 
    <div class="catalog-price"> 
    <br />  
      <%# Eval("ProductBrand") %> 
      <%# Eval("ProductModel") %></div> 

    <div class="catalog-price2"> 
     <b> 
     Our Price: S$<%# Eval("NormalPrice") %></div> 
     </b><br /> 
    <div class="cell1"> 
     Add to cart</div> 
    <div class="cell2"> 
    <asp:HyperLink ID="HypViewDetails" style="text-decoration:none"  NavigateUrl='<%#Eval("ProductId", "ProductDetails.aspx?ProductID={0}")%>' 
runat="server">View Details</asp:HyperLink> 
     </div> 
</div> 
</ItemTemplate> 
    <ItemSeparatorTemplate> 
     <div class="itemSeparator"> 
     </div> 
    </ItemSeparatorTemplate> 
    <GroupSeparatorTemplate> 
     <div class="groupSeparator"> 
     </div> 
    </GroupSeparatorTemplate> 
    <EmptyDataTemplate> 
    </EmptyDataTemplate> 
</asp:ListView> 
    <asp:AccessDataSource ID="AccessDataSource1" runat="server" 
     DataFile="~/App_Data/TabStoreDB.mdb" 

      SelectCommand="SELECT * FROM Products WHERE (ProductCategory = ?) OR (ProductBrand = ?)"> 
     <SelectParameters> 
      <asp:QueryStringParameter Name="?" QueryStringField="ProductCategory" /> 
      <asp:QueryStringParameter Name="?" QueryStringField="ProductBrand" /> 
     </SelectParameters> 
    </asp:AccessDataSource> 

回答

2

除非我完全不理解你的問題。你可以只添加AND/ORWHERE條款

OR WHERE條款

SELECT * 
FROM Products 
WHERE (ProductCategory = ?) 
OR (ProductModel = ?) 

AND WHERE根據您的修改條款

SELECT * 
FROM Products 
WHERE (ProductCategory = ?) 
AND (ProductModel = ?) 

你有兩個查詢參數? - 他們每個人都需要有一個特定的名稱

SelectCommand="SELECT * FROM Products WHERE (ProductCategory = @ProductCategory) OR (ProductBrand = @ProductBrand)"> 
     <SelectParameters> 
      <asp:QueryStringParameter Name="ProductCategory" QueryStringField="ProductCategory" /> 
      <asp:QueryStringParameter Name="ProductBrand" QueryStringField="ProductBrand" /> 
     </SelectParameters> 

如果你不知道如何使用的參數,我建議如下閱讀:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.selectparameters.aspx

http://msdn.microsoft.com/en-us/library/xt50s8kz.aspx

+0

您好,我已經試過了上述說法,但是當我試圖訪問一個產品型號在我的ListView控件沒有出現例如。 Products.aspx?ProductModel = Acer – aurelio

+0

我想你需要提供一些關於你想要做什麼的更多細節。你想通過ProductCategory或ProductModel進行搜索嗎? – Taryn

+0

我希望能夠通過ProductCategory或ProductModel進行搜索。例如,當輸入Products.aspx?ProductCategory = Accessories時,ListView將顯示所有配件,並且在輸入Products.aspx?ProductModel = Acer時,ListView將顯示所有帶有型號'Acer'的產品 – aurelio

0

你倆給參數名稱相同。你需要specfic - 試試這個:

SelectCommand="SELECT * FROM Products WHERE (ProductCategory = @cat) OR (ProductBrand = @brand)"> 

然後將此:

<SelectParameters> 
      <asp:QueryStringParameter Name="cat" QueryStringField="ProductCategory" /> 
      <asp:QueryStringParameter Name="brand" QueryStringField="ProductBrand" /> 
     </SelectParameters> 
+0

我試過你的建議,但ListView仍然沒有顯示任何東西。奇怪的。 – aurelio

+0

對不起 - 不知道還有什麼建議。我的@表示法來自sql-server--你可能會檢查對Access的看法,看看它是否需要其他東西。 – Chains

+0

沒問題,謝謝你的幫助。欣賞它:) – aurelio

相關問題