我正在编写一个简单的搜索算法来显示包含在文本框中键入的值的结果。
我正在尝试将数据表中的信息放入 gridview 的 boundfield 元素中。我必须显示搜索结果的代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SimpleSearch.ascx.cs"Inherits="SimpleSearch" %>
<asp:TextBox ID="SimpleSearchBox" runat="server" />
<asp:Button ID="submitSearch" runat="server" Text="Search"
onClick="SimpSearch" />
<asp:Gridview ID="results" runat="server" Visible="false" >
<Columns>
<asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
<asp:BoundField DataField="Path" headerText="Path" SortExpression="Path" />
</Columns>
</asp:Gridview>
<label ID="errMsg" runat="server" />
但我认为真正的麻烦来自我的代码隐藏:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OleDb;
using System.Web.Configuration;
using System.Data.Common;
using System.Data;
public partial class SimpleSearch : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void SimpSearch(object sender, EventArgs e)
{
// retrieve the connection string from our config file
string connString =
WebConfigurationManager.ConnectionStrings["GeoNames"].ConnectionString;
// retrieve the provider name from config file
string providerName =
WebConfigurationManager.ConnectionStrings["GeoNames"].ProviderName;
// get the factory based on the provider name
DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
// create the connection
DbConnection conn = factory.CreateConnection();
conn.ConnectionString = connString;
//get text from search box
string query = SimpleSearchBox.Text;
try
{
// define the SQL command1
string sql = "SELECT Title, td.ImageID, ti.ImageID, Description FROM TravelImageDetails as td, TravelImage as ti";
sql += " WHERE td.ImageID = ti.ImageID AND td.Title LIKE '%@query%' OR td.Description LIKE'%@query%' ";
// create a command
DbCommand cmd = factory.CreateCommand();
cmd.CommandText = sql;
cmd.Connection = conn;
// create the data adapter
DbDataAdapter adapter = factory.CreateDataAdapter();
adapter.SelectCommand = cmd;
// fill a data table from the adapter
DataTable dt = new DataTable();
adapter.Fill(dt);
results.DataSource = dt;
results.DataBind();
results.Visible = true;
}
catch (Exception ex)
{
errMsg.InnerText = "<h2>An Error Occurred</h2>";
errMsg.InnerText += ex.Message;
}
finally
{
conn.Close();
}
}
}
单击搜索按钮显示没有数据,我想知道为什么它不会做任何事情。任何输入都会有所帮助,我的 c# 技能非常有限