试图在Gridview中搜索产品

本文关键字:搜索 Gridview | 更新日期: 2023-09-27 18:06:12

我使用三层架构来开发网站。我需要开发搜索功能,以显示基于什么用户类型在搜索栏的产品。当我调试时,我看到搜索值没有传递到ProductBL的GetProductInfo页面。下面是代码:

protected void Search(object sender, EventArgs e)
    {
        string searchString = Request.QueryString["ProductName"];
        Product product = new Product();
        product.ProductName = txtSearch.Text.Trim();
        ProductBL.GetProductInfo(searchString);
    }
GetProductInfo方法的代码:
public static DataTable GetProductInfo(string searchString)
    {
        string query = "SELECT * FROM [Products] where ProductName like @SearchString and Visible = 1";
        SqlCommand cmd = new SqlCommand(query);
        cmd.Parameters.AddWithValue("@SearchString", SqlDbType.Text).Value = searchString;
        return DbUtility.GetRecordsInDataTable(cmd);
    }

Gridview页面:

Search:
    <asp:TextBox ID="txtSearch" runat="server" />
    <asp:Button Text="Search" runat="server" OnClick="Search" />
    <hr />
    <br />
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID" CssClass="footable" 
        OnRowDeleting="DeleteRecord"  EmptyDataText="There are no data records to display." 
          CellPadding="4" ForeColor="#333333" GridLines="None">
        <AlternatingRowStyle BackColor="White"  />

请帮我一下

试图在Gridview中搜索产品

变化

string searchString = Request.QueryString["ProductName"];

string searchString = txtSearch.Text.Trim();

因为您要发送searchString作为:

GridView1.DataSource = ProductBL.GetProductInfo(searchString);
GridView1.DataBind();

您没有正确设置查询。首先尝试在SQL编辑器中检查您的查询。

问题就在这里。

like @SearchString

改成下面的

SELECT * FROM [Products] where ProductName like '%SearchString%' and Visible = 1

如果Products表中有记录,则通过查询获取。

还要看一下如何使用通配符

https://support.microsoft.com/en-in/kb/98434

希望对你有帮助。

这里似乎你的通配符条件是错误的:有每条评论,你必须改变你的查询,像下面。

 string query = "SELECT * FROM [Products] where ProductName like where name like '%' + replace(SearchString, '%', '[%]') + '%' and Visible = 1";

这里你的查询看起来像:select * from tablename where Column like '%[%]%'

它会给你更合适的结果。