1

テキスト ボックスに入力された値を含む結果を表示する単純な検索アルゴリズムを作成しています。

データテーブルからグリッドビューのバインドされたフィールド要素に情報を配置しようとしています。検索結果を表示するために必要なコード:

<%@ 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#の私のスキルは非常に限られています.

4

0 に答える 0