2014-05-02 101 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

相关问题