试图在Gridview中搜索产品

时间:2016-09-08 05:21:49

标签: c# asp.net gridview

我正在使用3层架构来开发网站。我需要开发搜索功能,以根据搜索栏中的用户类型显示产品。当我调试时,我看到搜索值没有传递给ProductBL的GetProductInfo页面。 这是代码:

$ ls -1 tstdir/[mf]2
tstdir/f2
tstdir/m2

GetProductInfo方法的ProductBL代码:

protected void Search(object sender, EventArgs e)
    {
        string searchString = Request.QueryString["ProductName"];
        Product product = new Product();

        product.ProductName = txtSearch.Text.Trim();

        ProductBL.GetProductInfo(searchString);
    }

Gridview页面:

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

请帮助我

3 个答案:

答案 0 :(得分:0)

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

问题出在这里。

like @SearchString

将其更改为以下内容

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

如果Products表中有记录,那么它将通过查询获取。

另请参阅如何使用通配符

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

希望有所帮助。

答案 1 :(得分:0)

这似乎是您的通配符条件错误: 每条评论都要改变您的查询,如下所示。

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

此处您的查询似乎是:select * from tablename where Column like '%[%]%'

它会给你更合适的结果。

答案 2 :(得分:0)

更改

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

string searchString = txtSearch.Text.Trim();

因为您要将searchString发送至:

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