2016-12-03 20 views
0

時間を割いてリクエストを読んでいただきありがとうございます。私はASP.Netが初めてで、SQL Serverデータベースを検索し、属性のようなクエリに基づいて結果を取得するテキストボックス/ボタンを実装する方法を理解しようとしています。ここでは...私がこれまで持っているものであるシンプルなASP.NET検索バーを使用してSQL Serverテーブルを検索

ASPXメインファイル:

using System; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace RampantryF 
{ 
    public partial class Products : System.Web.UI.Page 
    { 
     public SqlConnection con; 
     public string constr; 



     public void connection() 
     { 
      constr = ConfigurationManager.ConnectionStrings["PRODUCT"].ToString(); 
      con = new SqlConnection(constr); 
      con.Open(); 

     } 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      SearchBox.Visible = false; 
     } 

     private void rep_bind() 
     { 
      connection(); 
      string query = "select * from PRODUCT where PRODUCT_NAME like'" + TextBox4.Text + "%'"; 

      SqlDataAdapter da = new SqlDataAdapter(query, con); 
      DataSet ds = new DataSet(); 
      da.Fill(ds); 
      GridView1.DataSource = ds; 
      GridView1.DataBind(); 
     } 


     protected void Button1_Click(object sender, EventArgs e) 
     { 
      connection(); 
      string query = "select PRODUCT_NAME from PRODUCT where PRODUCT_NAME like'" + TextBox4.Text + "%'"; 
      SqlCommand com = new SqlCommand(query, con); 

      SqlDataReader dr; 
      dr = com.ExecuteReader(); 


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

       rep_bind(); 
       GridView1.Visible = true; 

       TextBox4.Text = ""; 
       SearchBox.Text = ""; 
      } 
      else 
      { 
       GridView1.Visible = false; 
       SearchBox.Visible = true; 
       SearchBox.Text = "The search Term " + TextBox4.Text + "  Is Not Available in the Records"; ; 

      } 
     } 
    } 
} 

BLL Products.csファイル: 'Products.aspx.cs' コードビハインドファイル

<%@ Page Title="" Language="C#" MasterPageFile="~/PantryAdmin.Master"  AutoEventWireup="true" CodeFile="Products.aspx.cs" Inherits="RampantryF.Products" %> 
    <asp:Content runat="server" ContentPlaceHolderID="ContentPlaceHolder1"> 

<!DOCTYPE html> 
<script runat="server"> 
    public string SearchString 
    { 
     get { return TextBox4.Text; } 
    } 
</script> 
    <html> 

<head> 

    <title></title> 
</head> 
<body> 

    <div> 
     /*Search box*/ 

     <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox> 
     <asp:Button ID="Button1" PostBack="" runat="server" Text="Search" /> 
    <asp:Label ID="SearchBox" runat="server" Text="Label" ForeColor="Maroon"></asp:Label> 
    </div> 
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" AllowPaging="True" PageSize="5" AllowSorting="True"> 
      <Columns> 
       <asp:BoundField DataField="PRODUCT_ID" HeaderText="PRODUCT_ID" ReadOnly="True" SortExpression="PRODUCT_ID" /> 
       <asp:BoundField DataField="UPC_CODE" HeaderText="UPC_CODE" ReadOnly="True" SortExpression="UPC_CODE" /> 
       <asp:BoundField DataField="PRODUCT_NAME" HeaderText="PRODUCT_NAME" ReadOnly="True" SortExpression="PRODUCT_NAME" /> 
       <asp:BoundField DataField="PRODUCT_TYPE" HeaderText="PRODUCT_TYPE" ReadOnly="True" SortExpression="PRODUCT_TYPE" /> 

      </Columns> 
     </asp:GridView> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:RampantryDB %>" SelectCommand="SELECT * FROM [PRODUCT]"></asp:SqlDataSource> 

     <fieldset> 
     <asp:DetailsView 
      ID="dtlDonor" 
      DataSourceID="ObjectDataSource1" 
      DefaultMode="Insert" Caption="Add Product (C)" 

      AutoGenerateRows="False" 
      runat="server"> 
      <Fields> 

       <asp:BoundField DataField="PRODUCT_ID" HeaderText="PRODUCT_ID" ReadOnly="True" SortExpression="PRODUCT_ID" Visible="False" /> 




       <asp:TemplateField HeaderText="UPC_CODE" SortExpression="UPC_CODE"> 
        <EditItemTemplate> 
         <asp:Label ID="Label1" runat="server" Text='<%# Eval("UPC_CODE") %>'></asp:Label> 
        </EditItemTemplate> 
        <InsertItemTemplate> 
         <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("UPC_CODE") %>'></asp:TextBox> 
        </InsertItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="Label1" runat="server" Text='<%# Bind("UPC_CODE") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="PRODUCT_NAME" SortExpression="PRODUCT_NAME"> 
        <EditItemTemplate> 
         <asp:Label ID="Label2" runat="server" Text='<%# Eval("PRODUCT_NAME") %>'></asp:Label> 
        </EditItemTemplate> 
        <InsertItemTemplate> 
         <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("PRODUCT_NAME") %>'></asp:TextBox> 
        </InsertItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="Label2" runat="server" Text='<%# Bind("PRODUCT_NAME") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="PRODUCT_TYPE" SortExpression="PROUDUCT_TYPE"> 
        <EditItemTemplate> 
         <asp:Label ID="Label3" runat="server" Text='<%# Eval("PRODUCT_TYPE") %>'></asp:Label> 
        </EditItemTemplate> 
        <InsertItemTemplate> 
         <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("PRODUCT_TYPE") %>'></asp:TextBox> 
        </InsertItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="Label3" runat="server" Text='<%# Bind("PRODUCT_TYPE") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 

       <asp:CommandField ShowInsertButton="True" /> 
      </Fields> 
     </asp:DetailsView> 
    </fieldset> 

     <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SortParameterName="OrderBy" MaximumRowsParameterName="PageSize" DeleteMethod="Delete" InsertMethod="Insert" SelectMethod="SelectAll" TypeName="RampantryF.App_Code.BLL.PRODUCT" UpdateMethod="Update"> 
     <DeleteParameters> 
      <asp:Parameter Name="PRODUCT_ID" Type="Int32" /> 
     </DeleteParameters> 
     <InsertParameters> 
      <asp:Parameter Name="UPC_CODE" Type="Double" /> 
      <asp:Parameter Name="PRODUCT_NAME" Type="String" /> 
      <asp:Parameter Name="PRODUCT_TYPE" Type="String" /> 

     </InsertParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="PRODUCT_ID" Type="Int32" /> 
      <asp:Parameter Name="UPC_CODE" Type="Double" /> 
      <asp:Parameter Name="PRODUCT_NAME" Type="String" /> 
      <asp:Parameter Name="PRODUCT_TYPE" Type="String" /> 

     </UpdateParameters> 
    </asp:ObjectDataSource> 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using RampantryF.App_Code.DAL; 

namespace RampantryF.App_Code.BLL 
{ 
    public class PRODUCT 
{ 
    private int _PRODUCT_ID; 
    private double _UPC_CODE = 0; 
    private string _PRODUCT_NAME = String.Empty; 
    private string _PRODUCT_TYPE = String.Empty; 


    ///Product Unique Identifier 
    public int PRODUCT_ID 
    { 
     get { return _PRODUCT_ID; } 
    } 

    ///Product UPC_CODE 
    /// 
    public double UPC_CODE 
    { 
     get { return _UPC_CODE; } 
    } 
    ///Product PRODUCT_NAME 
    /// 
    public string PRODUCT_NAME 
    { 
     get { return _PRODUCT_NAME; } 
    } 
    /// <summary> 
    /// Product PRODUCT_TYPE 
    /// </summary> 
    public string PRODUCT_TYPE 
    { 
     get { return _PRODUCT_TYPE; } 
    } 


    ///retrieves all products 
    /// 
    public static List<PRODUCT> SelectAll() 
    { 
     DBUtils DBUtils = new DBUtils(); 
     return DBUtils.PRODUCTSelectAll(); 
    } 
    public static List<PRODUCT> SelectAll(string OrderBy) 
    { 
     DBUtils DBUtils = new DBUtils(); 
     return DBUtils.PRODUCTSelectAll(OrderBy); 
    } 
    ///Updates a particular product 
    /// 
    public static void Update(int PRODUCT_ID, double UPC_CODE, string PRODUCT_NAME, string PRODUCT_TYPE) 
    { 
     if (PRODUCT_ID < 1) 
      throw new ArgumentException("Product Id must be greater than 0", "id"); 

     PRODUCT ProductToUpdate = new PRODUCT(PRODUCT_ID, UPC_CODE, PRODUCT_NAME, PRODUCT_TYPE); 
     ProductToUpdate.Save(); 
    } 
    ///inserts new product 
    /// 
    public static void Insert(double UPC_CODE, string PRODUCT_NAME, string PRODUCT_TYPE) 
    { 
     PRODUCT newProduct = new PRODUCT(UPC_CODE, PRODUCT_NAME, PRODUCT_TYPE); 
     newProduct.Save(); 
    } 
    ///Deletes an Existing Product 
    /// 
    public static void Delete(int PRODUCT_ID) 
    { 
     if (PRODUCT_ID < 1) 
      throw new ArgumentException("Product Id must be greater than 0", "id"); 

     DBUtils DBUtils = new DBUtils(); 
     DBUtils.PRODUCTDelete(PRODUCT_ID); 
    } 
    ///validates Product information before saving Product 
    ///properties to database 
    /// 
    private void Save() 
    { 


     if (String.IsNullOrEmpty(_PRODUCT_NAME)) 
      throw new ArgumentException("Product PRODUCT_NAME not supplied", "PRODUCT_NAME"); 

     DBUtils DBUtils = new DBUtils(); 
     if (_PRODUCT_ID > 0) 
      DBUtils.PRODUCTUpdate(this); 
     else 
      DBUtils.PRODUCTInsert(this); 

    } 
    ///Intializes Product 
    /// 
    public PRODUCT(int PRODUCT_ID, double UPC_CODE, string PRODUCT_NAME, string PRODUCT_TYPE) 
    { 
     _PRODUCT_ID = PRODUCT_ID; 
     _UPC_CODE = UPC_CODE; 
     _PRODUCT_NAME = PRODUCT_NAME; 
     _PRODUCT_TYPE = PRODUCT_TYPE; 

    } 
    public PRODUCT(double UPC_CODE, string PRODUCT_NAME, string PRODUCT_TYPE) 
    { 
     _UPC_CODE = UPC_CODE; 
     _PRODUCT_NAME = PRODUCT_NAME; 
     _PRODUCT_TYPE = PRODUCT_TYPE; 

    } 


} 
} 

ご迷惑をおかけして申し訳ございません。繰り返しますが、私はこれに新しいです、私はチュートリアルに従っていて、解決策を見つけることを試みているインターネットを検索していますが、見つけられません。

今のところ、ページが読み込まれますが、ボタンがクリックされたときは実際には検索されません。私は、すべてのレコードが「LIKE Textbox4」クエリを満たすレコードにGridView1を変更したいと思います。

ありがとうございました!あなたはOnClick="Button1_Click"

<asp:Button ID="Button1" PostBack="" runat="server" Text="Search" OnClick="Button1_Click" /> 

のようなあなたの検索ボタンをクリックしてイベントを追加する必要が

答えて

0

また、ボタンのクリックイベント内で再び同じGridViewのにデータをバインドする別のメソッドを呼び出している、ということに注意してください。この2番目のメソッドからクリックイベントでバインドされたことを今までは失ってしまいます。