以前にこの質問を投稿しようとしましたが、意味がなかったと思います:)。だからここに私の2回目の試みがあります。入力時に従業員の名前を表示するためにjquery ui autocompleteを使用するasp.netプロジェクトがあります。その部分はうまくいきました。しかし、私がやりたかったのは、オートコンプリートの結果が表示されたときに各従業員の画像を追加することです。たとえば、「J」と入力すると、Joe、Jon などが表示され、それぞれの名前の横に従業員の写真が表示されます。写真のパスをデータベースに保存するので、これは問題ないと思いました。これが私の httphandler (.net の .ashx ファイル) です。
public class LoadNames : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
DataSet ds = null;
List<Employee> lstEmployees = new List<Employee>();
ds = GetLoginNames();
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
lstEmployees.Add(new Employee { Name = dr["Login"].ToString(), Picture = dr["Picture"].ToString() });
}
StringBuilder builder = new StringBuilder();
foreach (Employee e in lstEmployees)
{
builder.Append(string.Format("{0}|{1}|{2}", e.Name, e.Picture, Environment.NewLine));
}
context.Response.Write(builder.ToString());
}
}
public DataSet GetLoginNames()
{
SqlCommand cmdSelect = default(SqlCommand);
SqlConnection conMyData = default(SqlConnection);
SqlDataAdapter daIssues = default(SqlDataAdapter);
System.Data.DataSet ds = null;
conMyData = null;
//try and make a connection
try
{
conMyData = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["connString"]);
cmdSelect = new SqlCommand("selLoginNames", conMyData);
var _with1 = cmdSelect;
_with1.CommandType = System.Data.CommandType.StoredProcedure;
//add parameters
_with1.Parameters.Add("@Inactive", SqlDbType.Int).Value = 0;
daIssues = new SqlDataAdapter();
daIssues.SelectCommand = cmdSelect;
ds = new System.Data.DataSet();
daIssues.Fill(ds);
return ds;
//catch any exceptions that might be thrown
}
catch (Exception e)
{
throw e;
//clean up and close resources
}
finally
{
conMyData.Close();
cmdSelect = null;
conMyData = null;
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
基本的に、このクラスはデータを取得し、従業員のリストに保存します。次に、従業員の名前Login
とその写真を使用して作成しPicture
ます。だから私はこの部分を働かせました。jquery側では、画像を含めるように変更する方法がわかりません。これまでのところ、私が持っているのは彼らの名前の実際のテキストだけです:
$("#<%= txtName.ClientID %>").livequery(function () {
$(this).autocomplete("LoadNames.ashx", { minChars: 0, delay: 0 })
.result(function (event, data, formatted) { // data[0] : Login, data[1] :Picture, data[2]:newline character
if (data[0] != "") {
var url = "http://someURL/Default.aspx?Search=" + data[0];
window.open(url);
}
else {
}
});
});
私の質問は、上記のjqueryを変更して、オートコンプリートの結果に表示される画像を含めるにはどうすればよいですか?