2014-05-02 187 views
0

我正在處理asp.net並陷入此問題。我已經使用處理程序應用了全文搜索功能。現在我想的是,當用戶選擇從列表中的名稱(這是輸入關鍵字後建議)當用戶在文本框中的名稱,返回的用戶名與匹配的頁面應該被重定向到其個人資料如何從處理程序頁面發送ID到aspx頁面

<link href="Content/jquery.autocomplete.css" rel="stylesheet" /> 
    <script src="Scripts/jquery-1.4.1.min.js"></script> 
    <script src="Scripts/jquery-1.3.2.min.js"></script> 
    <script src="Scripts/jquery.autocomplete.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
$("#<%=txtSearch.ClientID%>").autocomplete('Search_CS.ashx'); 
    }); 
    </script> 

<div> 
<asp:TextBox ID="txtSearch" runat="server" ></asp:TextBox> 
    </div> 

搜索文本。它在處理程序中處理(ashx文件)

public void ProcessRequest (HttpContext context) { 
string prefixText = context.Request.QueryString["q"]; 
using (SqlConnection conn = new SqlConnection(strcon)) 
{ 

    using (SqlCommand cmd = new SqlCommand()) 
    { 
     cmd.CommandText = "select Profile_ID,FirstName, LastName from UserProfile where FirstName like '%' + @SearchText + '%' OR LastName 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["FirstName"]).Append(" ").Append(sdr["LastName"]).Append(Environment.NewLine); 

      } 
     } 
     conn.Close(); 
     context.Response.Write(sb.ToString()); 

    } 
} 
    } 

現在,當用戶輸入「Tom」時,打開一個列表,所有用戶名爲「tom」。當用戶選擇「湯姆約翰」時,頁面應導航到湯姆約翰配置文件。這可以通過選擇由用戶選擇的用戶名的Profile_ID來完成。如何通過Profile_ID將用戶重定向到特定用戶的個人資料頁面。

+2

爲什麼你使用jQuery兩次?那也是'jquery-1.3.2'和'jquery-1.4.1' – Satpal

回答

0

可以achive,使用在這裏選擇的事件就是例子

$(function() { 

      $("#<%=txtSearch.ClientID%>").autocomplete({ 
       source: "Search_CS.ashx", 
       // you need to handle on select event 
       select: function(event, ui) { 
       // here you can redirect ur user page 
       // http://jqueryui.com/autocomplete/#remote 
       window.top.location = this.value; 
       } 
     }); 
         }); 
+0

但是我將如何從處理程序返回所選用戶的Profile_ID? – user3596051

0
$(document).ready(function() { 
    $('#<%=txtSearch.ClientID%>').autocomplete({ 
     minLength: 3, 
     source: "Search_CS.ashx", 
     select: function(event, ui) { 
      window.location.href = 'profile.aspx?user=' + ui.item.value; 
     } 
    }); 
}); 

documentation瞭解更多詳情。

「source」屬性代表數據源的名稱,即應返回JSON數據的服務器端腳本。一旦用戶輸入一個字符串(的minLength:3)插件查詢「?Search_CS.ashx項= USER_INPUT」,並預期JSON輸出如下

[ 
    {"id":"123","label":"John","value":"123"}, 
    {"id":"435","label":"Bill","value":"435"} 
] 

所以,在你的代碼方面,它看起來應該

string prefixText = context.Request.QueryString["term"]; 

.... 

sb.Append("["); 
while (sdr.Read()) 
{ 
    string u = sdr["FirstName"].ToString() + " " + sdr["LastName"].ToString(); 

    if (sb.Length > 1) 
     sb.Append(","); 
    sb.AppendFormat("{{\"id\":\"{0}\",\"label\":\"{0}\",\"value\":\"{0}\"}}", u); 
} 
sb.Append("]"); 
+0

但我將如何從處理程序返回所選用戶的Profile_ID? – user3596051

+0

發佈更新 – Alex

+0

通過這樣做..列表未被填充 – user3596051

相關問題