使用简单的ASP.NET搜索栏搜索SQL Server表



感谢您抽出宝贵的时间阅读我的请求。我是ASP.NET的新手,我正在尝试弄清楚如何实现将搜索SQL Server数据库的文本框/按钮,并根据"像"属性的查询获取结果。这是我到目前为止所拥有的...

aspx主文件:

<%@ 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>

'products.aspx.cs'代码文件:

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 + " &nbsp;Is Not Available in the Records"; ;
            }
        }
    }
}

bll products.cs文件:

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;
    }

}
}

任何人都能提供的任何帮助都非常感谢!同样,我是新手,我一直在关注教程,并在互联网上搜索试图找到解决方案,但找不到解决方案。

截至目前,该页面已加载,但是在单击按钮时实际上不会搜索。我希望它将所有记录的GridView1更改为填充"类似TextBox4"查询的记录。

谢谢!

您需要将单击事件添加到搜索按钮,例如OnClick="Button1_Click"

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

另外,请注意,在按钮单击事件中,您正在调用另一种将数据绑定到同一gridview的方法。您将失去第二种方法的点击事件中绑定的任何东西。

最新更新