Как добавить более одного оператора SQL / строку запроса на 1 источник данных? - PullRequest
0 голосов
/ 01 августа 2011

В настоящее время у меня есть следующий оператор с QueryString, установленным в ProductCategory в моем элементе управления ListView:

SELECT * FROM Products WHERE (ProductCategory = ?)

Я хотел бы добавить этот оператор и строку запроса в один и тот же источник данных, чтобы разрешить и строку запроса для ProductModel, как я могу это сделать?

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 ]

2 голосов
/ 01 августа 2011

Если я полностью не понимаю твою проблему. Вы можете просто добавить AND/OR к вам WHERE пункт

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 голосов
/ 01 августа 2011

Вы дали обоим параметрам одно и то же имя.Вы должны быть конкретны - попробуйте это:

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

А затем это:

<SelectParameters>
            <asp:QueryStringParameter Name="cat" QueryStringField="ProductCategory" />
            <asp:QueryStringParameter Name="brand" QueryStringField="ProductBrand" />
        </SelectParameters>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...