1

JQueryでオートコンプリートされたASP.NETテキストボックスがあり、完全に機能しています。人の名前の一部を入力し、可能なすべてのオプションを含むリストを表示しますが、名前を検索すると、結果のリストに表示されます。名前の横にある電子メールアドレス、名前と電子メールはSQLデータベースにあります。ジョンと入力すると、次のリストが表示されます。

ジョンアンドリュースJohn@email.com

John Smith Smith@email.com

など...これはコードです:

  <%@ WebHandler Language="C#" Class="Search_CS" %>
    using System;
    using System.Web;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Text;

    public class Search_CS : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        string prefixText = context.Request.QueryString["q"];
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager
                    .ConnectionStrings["constr"].ConnectionString;
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.CommandText = "select * from directory where name like @SearchText + '%'";
                cmd.Parameters.AddWithValue("@SearchText", prefixText);
                cmd.Connection = conn;
                StringBuilder sb = new StringBuilder(); 
                conn.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        sb.Append(sdr["name"])
                            .Append(Environment.NewLine);
                    }
                }
                conn.Close();
                context.Response.Write(sb.ToString()); 
            }
        }
    }

    public bool IsReusable {
        get {
            return false;
        }
    }
    }
4

2 に答える 2

1

jQuery オートコンプリートでは、2 つのフィールドを表示できます。これには、jsonp データソースを使用する必要があります。

こちらのデモをご覧ください。

json データを取得するには、IHttpHandler を変更して json を出力する必要があります。

このためには、オブジェクトのリストを作成し、JavaScriptSerializer を使用してそれを json にシリアル化する必要があります。

例えば:

//myList = your list of objects with name and email.
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(myList);
于 2012-06-21T18:12:48.240 に答える
0

文字列ビルダーに名前を追加するときに、電子メールも追加します..このコードは機能するはずです

while (sdr.Read())
{
    sb.Append(sdr["name"] + " " + sdr['email']).Append(Environment.NewLine);
}

また

while (sdr.Read())
{
    sb.Append(sdr["name"])
    sb.Append(" ") //space between name and email
    sb.Append(sdr['email'])
    sb.Append(Environment.NewLine);
}
于 2012-06-21T18:11:42.220 に答える