2016-08-13 5 views
0

в текстовом поле автозаполнения jquery Я хочу показать значение «title» из базы данных, и мой код работает нормально, но я хочу, чтобы пользователь, щелкнув один результат, перенаправил ему на эту страницу:Как получить идентификатор выбранного объекта автозаполнения jquery в ASP.NET

[email protected]

но мой код прохождения «название» поле и я не знаю, как передать в поле «ID» из базы данных, что HREF.

это мой код:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestSearch.aspx.cs" Inherits="TestSearch" %> 
 

 
<!DOCTYPE html> 
 

 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head runat="server"> 
 
    <title></title> 
 
    <script src="js/jquery.js"></script> 
 
    <script src="js/jquery-ui.js"></script> 
 
    <link href="css/jquery-ui.css" rel="stylesheet" /> 
 
    <link href="css/site.css" rel="stylesheet" /> 
 
    <script type="text/javascript"> 
 
     $(document).ready(function() { 
 
      SearchText(); 
 
     }); 
 
     function SearchText() { 
 
      $("#SearchText").autocomplete({ 
 
       select: function (event, ui) { 
 
        window.location.href = 'ArticleDetails.aspx?ID=' + ui.item.value; 
 
       }, 
 
       source: function (request, response) { 
 
        $.ajax({ 
 
         type: "POST", 
 
         contentType: "application/json; charset=utf-8", 
 
         url: "TestSearch.aspx/Getauto", 
 
         data: "{'title':'" + document.getElementById('SearchText').value + "'}", 
 
         dataType: "json", 
 
         success: function (data) { 
 
          response(data.d); 
 
         }, 
 
         error: function (result) { 
 
          alert("ERROR!!!"); 
 
         } 
 
        }); 
 
       } 
 
      }); 
 
     } 
 
    </script> 
 
</head> 
 
<body> 
 
    <form id="form1" runat="server"> 
 
    <div> 
 
    <asp:TextBox ID="SearchText" runat="server"></asp:TextBox> 
 
    </div> 
 
    </form> 
 
</body> 
 
</html>

и это фоновый код:

using System; 
 
using System.Collections.Generic; 
 
using System.Configuration; 
 
using System.Data; 
 
using System.Data.SqlClient; 
 
using System.Web.Services; 
 

 
public partial class TestSearch : System.Web.UI.Page 
 
{ 
 
    protected void Page_Load(object sender, EventArgs e) 
 
    { 
 
     SearchText.Text = null; 
 
    } 
 

 
    public class RespObj 
 
    { 
 
     public string label { get; set; } 
 
     public string value { get; set; } 
 
    } 
 

 
    [WebMethod] 
 
    public static List<RespObj> Getauto(string title) 
 
    { 
 
     List<RespObj> result = new List<RespObj>(); 
 
     string cs = ConfigurationManager.ConnectionStrings["MyCS"].ConnectionString; 
 
     using (SqlConnection con = new SqlConnection(cs)) 
 
     { 
 
      SqlCommand cmd = new SqlCommand("SpMySearch", con); 
 
      cmd.CommandType = CommandType.StoredProcedure; 
 
      { 
 
       con.Open(); 
 
       cmd.Parameters.AddWithValue("@SearchText", title); 
 
       SqlDataReader dr = cmd.ExecuteReader(); 
 
       while (dr.Read()) 
 
       { 
 
        result.Add(new RespObj(){ 
 
         label = dr["title"].ToString(), 
 
         value = dr["id"].ToString() 
 
        }); 
 
       } 
 
       return result; 
 
      } 
 
     } 
 
    } 
 
}

ответ

0

Jquery Ui должен также поддерживать, если вам используйте массив объектов Json со свойствами Label и значением. Поэтому в ответе с вашего сервера вы должны вернуть массив Json из этих объектов.

Может быть, вы измените код сервера на что-то вроде этого:

class RespObj { 
    public string label { get; set; } 
    public string value { get; set; } 
} 

[WebMethod] 
public static List<RespObj> Getauto(string title) 
{ 
    List<RespObj> result = new List<RespObj>(); 
    string cs = ConfigurationManager.ConnectionStrings["MyCS"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(cs)) 
    { 
     SqlCommand cmd = new SqlCommand("SpMySearch", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     { 
      con.Open(); 
      cmd.Parameters.AddWithValue("@SearchText", title); 
      SqlDataReader dr = cmd.ExecuteReader(); 
      while (dr.Read()) 
      { 
       result.Add(new RespObj(){ 
        label = dr["title"].ToString(), 
        value = dr["id"].ToString() 
       }); 
      } 
      return result; 
     } 
    } 
} 

На клиенте вы, возможно, нужно разобрать Jsonarray. Так что просто измените линию в этом.

response(JSON.parse(data)); 

И теперь вы должны иметь доступ к значению свойства и получить связанный с ним идентификатор.

+0

Я отредактировал мой код, но я получаю синтаксическую ошибку! Описание: Произошла ошибка во время компиляции ресурса, необходимого для обслуживания этого запроса. Ознакомьтесь с приведенными ниже конкретными данными об ошибках и соответствующим образом измените исходный код. Compiler Error Message: CS1003: Синтаксическая ошибка '' ожидаемый Источник ошибки: Строка 35: { Line 36: result.Add (новый RespObj() { Line 37: этикетка: д-р [ "название "] .ToString(), Строка 38: значение: dr [" id "]. ToString() Строка 39:}); – Tonto23

+0

Вы установили все скобки и т. Д. Правильно? Можете ли вы опубликовать свой код? –

+0

Я обновил и добавил код в свой вопрос ... – Tonto23

Смежные вопросы