1

検索ページを作って結果を表示しています。UI は次のとおりです。

ここに画像の説明を入力

結果をグリッドビューに表示します。今のところ、タイトルで検索するだけですが、ドロップダウン リストには他のオプションがあります。ドロップダウン リストの選択した値に基づいてクエリを作成し、それらをグリッドビューに表示したいと考えています。これどうやってするの?検索ページのコードは次のとおりです。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Search.aspx.cs" Inherits="Pages_Search" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: right">

    <asp:LinkButton ID="logout" runat="server" onclick="logout_Click">Log out</asp:LinkButton>

</div>
<br />
<br />
Search For Books:&nbsp;
<asp:TextBox ID="tSearchBox" 
             Text="Catalog Search" 
        onfocus="if(this.value=='Catalog Search')this.value='';"     onblur="if(this.value=='')this.value='Catalog Search';"
                 runat="server" Height="17px" Width="189px" ForeColor="#CCCCCC" 
        >Catalog Search</asp:TextBox>
&nbsp;&nbsp;&nbsp;
<asp:Button ID="bSearchButton" runat="server" Height="24px" 
    onclick="bSearchButton_Click" PostBackUrl="SearchResults.aspx" Text="Search" 
    Width="119px" />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:DropDownList ID="SearchBy" runat="server" Height="17px" Width="188px" 
    onselectedindexchanged="SearchBy_SelectedIndexChanged">

 <asp:ListItem>Search by title</asp:ListItem>
    <asp:ListItem>Search by author</asp:ListItem>
    <asp:ListItem>Search by item type</asp:ListItem>
    <asp:ListItem>Search by publish year</asp:ListItem>
</asp:DropDownList>
<br />
<br />
<br />
<br />
    <asp:LinkButton ID="lReturnHome" runat="server" onclick="lReturnHome_Click">Return Homepage</asp:LinkButton>
<br />
</form>
</body>
</html>

結果を表示するページのコードは次のとおりです。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SearchResults.aspx.cs"  Inherits="Pages_SearchResults" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: right">

    <asp:LinkButton ID="logout" runat="server" onclick="logout_Click">Log out</asp:LinkButton>

</div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="ISBN" DataSourceID="SqlDataSource1" 
    onselectedindexchanged="GridView1_SelectedIndexChanged" 
    onrowcommand="GridView1_RowCommand">
    <Columns>
        <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
        <asp:BoundField DataField="ISBN" HeaderText="ISBN" ReadOnly="True" 
            SortExpression="ISBN" />
        <asp:BoundField DataField="AuthorName" HeaderText="AuthorName" 
            SortExpression="AuthorName" />
        <asp:BoundField DataField="AuthorlName" HeaderText="AuthorlName" 
            SortExpression="AuthorlName" />
        <asp:BoundField DataField="ItemType" HeaderText="ItemType" 
            SortExpression="ItemType" />
        <asp:BoundField DataField="PublishYear" HeaderText="PublishYear" 
            SortExpression="PublishYear" />



    </Columns>
 </asp:GridView>
 <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT * FROM [Items] WHERE ([Title] LIKE '%' + @Title + '%')">
    <SelectParameters>
          <asp:FormParameter FormField="tSearchBox" Name="Title" Type="String" />
     </SelectParameters>
 </asp:SqlDataSource>
 <br />
     <asp:Label ID="Label1" runat="server" Text="Type ISBN to loan:"></asp:Label>
&nbsp;&nbsp;
<asp:TextBox ID="tLoanBox" runat="server" Width="137px"></asp:TextBox>
&nbsp;&nbsp;&nbsp;
<asp:Button ID="bLoanButton" runat="server" onclick="bLoanButton_Click" 
    PostBackUrl="~/Pages/SearchResults.aspx" Text="Loan" Width="103px" />
&nbsp;&nbsp;&nbsp;
<asp:Label ID="loanSuccesful" runat="server" 
    style="color: #00CC00; font-weight: 700" Text="Loan Succesful" Visible="False">    </asp:Label>
<br />
<br />
<asp:Label ID="notAvailable" runat="server" style="color: #FF0000" 
    Text="There is no available copy in the library now." Visible="False"></asp:Label>
<br />
<br />
</form>
</body>
</html>

助けていただければ幸いです。ありがとう

4

1 に答える 1

1

さて、これがあなたのやり方です:

1) 値がデータベース内の列名と同じになるように、dropwonlist を操作します。

<asp:DropDownList ID="ddlFilter" runat="Server">
<asp:ListItem>Search by title</asp:ListItem>
<asp:ListItem Text="Search by author" Value="author" />
<asp:ListItem Text="Search by item type" Value="type" />
<asp:ListItem Text="Search by publish year" Value="year" />    
</asp:DropDownList>

2) SQL データソースを次のように操作します。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT * FROM [Items] WHERE ([Title] LIKE '%' + @Title + '%' or [author] LIKE '%' + @Filter+ '% or [type] LIKE '%' + @Filter+ '%' or [year] LIKE '%' + @Filter+ '%'') And


    <SelectParameters>
          <asp:FormParameter FormField="tSearchBox" Name="Title" Type="String" />
   <asp:ControlParameter Name="Filter" ControlID="ddlFilter" PropertyName="SelectedValue" /> 
     </SelectParameters>
 </asp:SqlDataSource>

必要に応じて Or を And の近くに変更できます

よろしく

于 2013-05-29T21:54:09.263 に答える