试图在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" />
请帮我一下
变化
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 '%[%]%'
它会给你更合适的结果。