2016-04-21 9 views
2

Ich erstelle ASP.NET, C# -Anwendung. Wo sind zwei Textfelder bei der Eingabe von Wert Ergebnis wird in Gridview von SQL Server angezeigt. Problem ist, dass, wenn ich Nummer 5 gebe ich 15 Wert, example. Kann jemand einen Hinweis geben?Kann nicht genau Wert von SQL-Datenbank in ASP.NET erhalten

Wie bekomme ich genau den Wert aus der Datenbank, wie in Textbox eingegeben?

Source Code:

SQL-Prozedur

Create table Hall 
(
    HallID int, 
    Name nvarchar(50), 
    TicketLimit int 
) 
GO 

Create table HallGroup 
(
    HallID int, 
    HallGroupID int, 
    Name nvarchar(50), 
    AZ int 
) 
GO 

Create table HallSeat 
(
    HallGroupID int, 
    ShowSeatID int, 
    Color nvarchar(15), 
    Price int, 
    SeatRow int,  
    SeatNumber int, 
    IsReserved bit 
) 

/**Search Procedure ****/ 

USE [Reservations] 
GO 

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER Procedure [dbo].[Search] 
@searchNumber varchar(50), 
@searchRow varchar(50) 

as 
Begin 
    select * from HallSeat where (SeatNumber like '%' + @searchNumber + '%') and (SeatRow like '%' + @searchRow + '%') 

End 

Code hinter

protected void ButtonSearch_Click(object sender, EventArgs e) 
    { 
     cs = ConfigurationManager.ConnectionStrings["CS"].ConnectionString; 

     SqlConnection result = new SqlConnection(cs); 

     String search = "Search"; // Paieskos   
     SqlCommand find = new SqlCommand(search, result); 
     find.CommandType = CommandType.StoredProcedure; 
     find.Parameters.Add("@searchRow", SqlDbType.VarChar).Value = TextBoxRow.Text; 
     find.Parameters.Add("@searchNumber", SqlDbType.VarChar).Value = TextBoxNumber.Text; 

     result.Open(); 
     SqlDataReader dr; 
     dr = find.ExecuteReader(); 

     if (dr.HasRows) 
     { 
      dr.Read(); 

      rep_bind(); 
      GridView1.Visible = true; 

      TextBoxRow.Text = ""; 
      TextBoxNumber.Text = ""; 
     } 
     else 
     { 
      GridView1.Visible = false; 

     } 

    } 

Aspx

<div class="container">  

     <asp:TextBox ID="TextBoxRow" placeholder="Type Seat Row" runat="server" style="border-radius: 5px;" Height="35px"></asp:TextBox>    
     <asp:TextBox ID="TextBoxNumber" placeholder="Type Seat Number" runat="server" style="border-radius: 5px;" Height="35px"></asp:TextBox> 
     <br> 
     <br> 
     <br> 

     <asp:Button ID="ButtonSearch" runat="server" CssClass="button" Text="Search for availability" OnClick="ButtonSearch_Click" OnClientClick="true" UseSubmitBehavior="false" /> 
     <style type="text/css"> 
      .button { 
       background:white; 
       color: black; 
       border: solid 3px #6496c8; 
       font-family: cursive; 
       font-size: 18px; 
      } 
      .button:hover, 
      .button.hover 
      { 
       border-color: #346392; 
       background: #7ABCDC; 
       color: white;    
      } 
      .button:active{ 
       border-color: #27496d; 
       color: #27496d; 
      } 

     </style> 
    </div> 

    <!-- Paieskos rezultatu isvedimas GridView--> 

<div id="GRID"> 
    <asp:GridView ID="GridView1" runat="server" HorizontalAlign="Center" AllowPaging="True" CellPadding="3" Width="568px" GridLines="Vertical" Visible="False" AutoGenerateColumns="False" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px">  

     <FooterStyle BackColor="#CCCCCC" ForeColor="Black" /> 
     <HeaderStyle BackColor="#121315" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#EEEEEE" ForeColor="Black" /> 
     <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" /> 
     <SortedAscendingCellStyle BackColor="#F1F1F1" /> 
     <SortedAscendingHeaderStyle BackColor="#0000A9" /> 
     <SortedDescendingCellStyle BackColor="#CAC9C9" /> 
     <SortedDescendingHeaderStyle BackColor="#000065" /> 

      <AlternatingRowStyle BackColor="#DCDCDC" /> 

     <Columns>   

     <asp:TemplateField HeaderText="HALL"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("HallGroupID") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("HallGroupID") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 


      <asp:TemplateField HeaderText="ID"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("ShowSeatID") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label3" runat="server" Text='<%# Bind("ShowSeatID") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="COLOR"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("Color") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label4" runat="server" Text='<%# Bind("Color") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="PRICE"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("Price") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label5" runat="server" Text='<%# Bind("Price") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="ROW"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("SeatRow") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label6" runat="server" Text='<%# Bind("SeatRow") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField HeaderText="NUMBER"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox7" runat="server" Text='<%# Bind("SeatNumber") %>'></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label7" runat="server" Text='<%# Bind("SeatNumber") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField>    

      <asp:TemplateField HeaderText="STATUS" SortExpression="Active"> 
        <ItemTemplate><%# (Boolean.Parse(Eval("IsReserved").ToString())) ? "RESERVED" : "FREE" %></ItemTemplate> 
      </asp:TemplateField>    

      <asp:TemplateField>     
       <ItemTemplate>       
        <asp:Button ID="ButtonReserve" style="background:#2ACC16; border-radius:8px;" runat="server" CommandName="Reserve" HeaderText="BOOK SEAT" Text="Reserve" OnClick="ButtonReserve_Click" />     
       </ItemTemplate>    
      </asp:TemplateField> 

     </Columns>      
    </asp:GridView> 
+0

Ich sehe nirgendwo entweder Ihren Code oder was haben Sie versucht. –

+0

Bitte zeigen Sie, welchen Code Sie geschrieben haben, um eine Verbindung zu db herstellen und holen –

+3

Sie müssen Ihren Code und mindestens SQL-Abfrage zeigen, die Sie verwenden –

Antwort

5

Sie verwenden like Operator in SQL-Seite zu suchen. Es wird nicht verglichen wie es ist, sondern wird nach einem Muster suchen. In Ihrem Beispiel wird es alle Datensätze haben 5 in es.

Für weitere Informationen besuchen Like operator

= Betreiber um Ihre Lösung verwenden, um Arbeit, die genaue Eingabe vergleichen.

select * from HallSeat where (SeatNumber = +'+ @searchNumber +'+) and (SeatRow like '%' + @searchRow + '%') 
1

Weil Sie mit like '%5%' suchen versuchen, mit = '5'

+0

Danke. Ich habe alle% Symbole gelöscht und lasse '' und es hat gut funktioniert. – Paulius

0

müssen Sie das Datareader auf die Gridview binden, wie in dieser Probe executer nicht datarader.Read(), bevor Sie die Bindung nicht.

Und wie von den anderen gesagt, ist Ihre gespeicherte Prozedur nicht in Ordnung. sollte so sein

ALTER Procedure [dbo].[Search] 
@searchNumber int, 
@searchRow int 

as 
Begin 
    select * from HallSeat where SeatNumber = @searchNumber and SeatRow = @searchRow 

End 
Verwandte Themen