0

必要な出力を取得するのに問題があります。現在、データベースを検索して結果を表示する 2 つのテキスト ボックスがあります (SerialNumber と SiteID)。現在、これらのボックスの両方が満たされている場合にのみ、データが表示されます。ただし、シリアル番号が空白でサイト ID が 3 の場合、サイト ID 3 のすべてのデータが再生されます。シリアル番号が T7 でサイト ID が空白の場合、シリアル番号が T7 のすべてのデータが表示されます。両方のフィールドが空の場合、何も表示されません。最後に、SerialNum が T7 で SiteID が 3 の場合、T7 と 3 のすべてのデータが表示されます。

現在: ボックスの 1 つが空の場合、データベースには何も表示されません。

C# を使用して .ASPX ファイルで使用しているコードを次に示します。必要な出力を取得するためにこのコードを提案できる人はいますか?おそらく CASE 句または IF を考えていましたが、コードのどこに配置するかわかりませんか? ありがとう

   <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb"   Inherits="_Default" %>

   <!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>

    Enter Serial Number:<br />
    <asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Search" />
    <br />
    <br />
    Enter Site Name:<br />
    <asp:TextBox ID="TextBox2" runat="server" ></asp:TextBox>
    <br />
    <br />
    <asp:Label ID="Label1" runat="server"></asp:Label>
    <br />
    <asp:Label ID="Label2" runat="server"></asp:Label>
    <br />
    <asp:Label ID="Label3" runat="server"></asp:Label>
    <br />
    <br />
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
        AutoGenerateColumns="False" BackColor="White" BorderColor="White" 
        BorderStyle="Ridge" BorderWidth="2px" CellPadding="3" CellSpacing="1" 
        DataSourceID="SqlDataSource1" GridLines="None" AllowSorting="True">
        <Columns>
            <asp:BoundField DataField="SerialNum" HeaderText="SerialNum" 
                SortExpression="SerialNum" />
            <asp:BoundField DataField="SiteId" HeaderText="SiteId" 
                SortExpression="SiteId" />
            <asp:BoundField DataField="Location" HeaderText="Location" 
                SortExpression="Location" />
            <asp:BoundField DataField="ContainerId" HeaderText="ContainerId" 
                SortExpression="ContainerId" />
            <asp:CheckBoxField DataField="Misplaced" HeaderText="Misplaced" 
                SortExpression="Misplaced" />
            <asp:CheckBoxField DataField="Frozen" HeaderText="Frozen" 
                SortExpression="Frozen" />
            <asp:CheckBoxField DataField="Scratched" HeaderText="Scratched" 
                SortExpression="Scratched" />
            <asp:CheckBoxField DataField="Destroyed" HeaderText="Destroyed" 
                SortExpression="Destroyed" />
            <asp:BoundField DataField="ScratchpoolId" HeaderText="ScratchpoolId" 
                SortExpression="ScratchpoolId" />
            <asp:BoundField DataField="Vendor" HeaderText="Vendor" 
                SortExpression="Vendor" />
            <asp:CheckBoxField DataField="Exported" HeaderText="Exported" 
                SortExpression="Exported" />
            <asp:CheckBoxField DataField="Erased" HeaderText="Erased" 
                SortExpression="Erased" />
            <asp:CheckBoxField DataField="Bad" HeaderText="Bad" SortExpression="Bad" />
            <asp:CheckBoxField DataField="Encrypted" HeaderText="Encrypted" 
                SortExpression="Encrypted" />
            <asp:CheckBoxField DataField="Virtual" HeaderText="Virtual" 
                SortExpression="Virtual" />
            <asp:BoundField DataField="ReturnDate" HeaderText="ReturnDate" 
                SortExpression="ReturnDate" />
            <asp:BoundField DataField="ReturnSiteId" HeaderText="ReturnSiteId" 
                SortExpression="ReturnSiteId" />
        </Columns>
        <FooterStyle BackColor="#C6C3C6" ForeColor="Black" />
        <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />
        <PagerStyle BackColor="#C6C3C6" ForeColor="Black" HorizontalAlign="Right" />
        <RowStyle BackColor="#DEDFDE" ForeColor="Black" />
        <SelectedRowStyle BackColor="#9471DE" Font-Bold="True" ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#F1F1F1" />
        <SortedAscendingHeaderStyle BackColor="#594B9C" />
        <SortedDescendingCellStyle BackColor="#CAC9C9" />
        <SortedDescendingHeaderStyle BackColor="#33276A" />
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:VerticesConnectionString %>" 

        SelectCommand="SELECT SerialNum, SiteId, Location, ContainerId, Misplaced, Frozen, Scratched, Destroyed, ScratchpoolId, Vendor, Exported, Erased, Bad, Encrypted,  Virtual, ReturnDate, ReturnSiteId FROM Media
                    FULL JOIN MediaInfo
                    ON Media.MediaID= MediaInfo.MediaID
                    FULL JOIN MediaStatus
                    ON MediaInfo.MediaID= MediaStatus.MediaID
                    FULL JOIN MediaReturn
                    ON MediaStatus.MediaID= MediaReturn.MediaID
                    FULL JOIN MediaGenT
                    ON Media.NoteID= MediaGenT.NoteID
    WHERE (([SerialNum] like '%' + @SerialNum + '%') AND ([SiteId] = @SiteId))">
        <SelectParameters>
            <asp:ControlParameter ControlID="TextBox1" Name="SerialNum"  PropertyName="Text" 
                Type="String" />
            <asp:ControlParameter ControlID="TextBox2" Name="SiteId"  PropertyName="Text" 
                Type="Int32" />
        </SelectParameters>
    </asp:SqlDataSource>

</div>
</form>
</body>
</html>
4

1 に答える 1

0

ここでは、テキスト ボックス内の引数をチェックし続ける必要があります。まず、メイン クエリから where 条件を削除し、言及された引数に応じて、この where 条件を追加します。

SelectCommand=SELECT SerialNum, SiteId, Location, ContainerId, Misplaced, Frozen,    Scratched, Destroyed, ScratchpoolId, Vendor, Exported, Erased, Bad, Encrypted,  Virtual, ReturnDate, ReturnSiteId FROM Media
                FULL JOIN MediaInfo
                ON Media.MediaID= MediaInfo.MediaID
                FULL JOIN MediaStatus
                ON MediaInfo.MediaID= MediaStatus.MediaID
                FULL JOIN MediaReturn
                ON MediaStatus.MediaID= MediaReturn.MediaID
                FULL JOIN MediaGenT
                ON Media.NoteID= MediaGenT.NoteID"

if(SerialNumber!=null && SiteID!=null)
{

SelectCommand+="WHERE (([SerialNum] like '%' + @SerialNum + '%') AND ([SiteId] = @SiteId))"
}
elseif(SerialNumber.isnull() && !SiteId.isnull())
{
 SelectCommand+="WHERE  [SiteId] = @SiteId"
}
elseif(!SerialNumber.isnull() && SiteId.isnull())
{
SelectCommand+="where [SerialNum] like '%' + @SerialNum + '%'"
}

PS それぞれの言語の構文を使用してください。

于 2013-05-31T08:55:30.983 に答える