私は3層アーキテクチャを使用してウェブサイトを開発しています。私は、検索バーのどのユーザータイプに基づいて製品を表示するための検索機能を開発する必要があります。デバッグすると、検索値がProductBLのGetProductInfoページに渡されていないことがわかります。ここ はコードです:Gridviewで商品を検索しようとしています
protected void Search(object sender, EventArgs e)
{
string searchString = Request.QueryString["ProductName"];
Product product = new Product();
product.ProductName = txtSearch.Text.Trim();
ProductBL.GetProductInfo(searchString);
}
ProductBLコード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" />
親切
あなたのクエリを設定していないこの
*何それは意味ですか?検索文字列がここにないのですか? 'GetProductInfo(string searchString)' –
@Divこれはエラーです。パラメータ化されたクエリ '(@SearchString nvarchar(4000))SELECT * FROM [Products]ここで、Pro'はパラメータ '@SearchString'が必要です。 – Orion
このように変更します。 "SELECT * FROM [製品]ここでProductNameは '%' + SearchString + ''およびVisible = 1 'のようになります。 –