テキスト ボックスに入力された値を含む結果を表示する単純な検索アルゴリズムを作成しています。
データテーブルからグリッドビューのバインドされたフィールド要素に情報を配置しようとしています。検索結果を表示するために必要なコード:
<%@ 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#の私のスキルは非常に限られています.