Использование открытого текста в качестве jQuery UI Источник данных автозаполнения? - PullRequest
0 голосов
/ 30 августа 2010

Я пришел к проекту, который немного выходит за рамки моих навыков (поскольку я являюсь разработчиком внешнего интерфейса), но мне все равно сказали заняться им.

По сути, я пытаюсь интегрировать автозаполнение jQuery UI с набором данных в виде простого текста. Вот файл «обработчик», который захватывает данные:

    <%@ WebHandler Language="C#" Class="ETFSymbollookupDataHandler" %>

using System;
using System.Web;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public class ETFSymbollookupDataHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        string type = context.Request.QueryString["type"];
        string srch = context.Request.QueryString["srch"];

        if (type == null)
            type = "a";
        if (srch == null)
            srch = "";

        context.Response.ContentType = "text/plain";

        string connString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["Ektron.DbConnection"].ConnectionString;

        using (SqlConnection conn = new SqlConnection(connString))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand("uspGetStockAutocomplete", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmSymbol = cmd.Parameters.Add("@SearchFor", SqlDbType.VarChar);
            prmSymbol.Direction = ParameterDirection.Input;
            prmSymbol.Size = 50;
            prmSymbol.IsNullable = true;
            prmSymbol.Value = (type == null ? (object)DBNull.Value : type);

            SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

            while (reader.Read())
            {
                string symbol = reader["symbol"].ToString();
                string name = reader["name"].ToString();

                context.Response.Write(symbol + ": " + name + "\n");
            }
        }
    }

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

Я понял, что эта страница принимает строку типа запроса, а затем возвращает список данных. Я играл с чем-то вроде:

$.ajax({
   url: "/ETFSymbollookupDataHandler.ashx",
   data: {
    type: "DELL"
    },

   success: function(ticker){
     alert(ticker);
   }
 });

И это возвращает ожидаемые результаты ... но я просто не уверен, как заставить их заполнить выпадающее меню автозаполнения. Виджет автозаполнения имеет параметр "источник" ... мне нужно как-то сохранить результат в переменной?

UPDATE:

Я продвинулся немного дальше, адаптировав один из примеров веб-сайта jQueryUI по своему вкусу:

$("#ticker").autocomplete({
    source: function(request, response) {
        $.ajax({
            url: "ETFSymbollookupDataHandler.ashx",
            data: {
                type: request.term
            },
            success: function(data) {
                response($.map(data.type, function(item) {
                    return {
                        label: item.symbol,
                        value: item.symbol
                    }
                }))
            }
        })
    }
});

Теперь, я посмотрел на ответ, и он возвращает неверные результаты, но ничего не отображается? Я предполагаю, что у меня что-то не так в разделе "ответ"?

1 Ответ

0 голосов
/ 30 августа 2010

Вы можете просто указать URL в качестве источника для автозаполнения пользовательского интерфейса jQuery.Нет необходимости играть с $ .ajax (), сохранять значения и т. Д. Автозаполнение сделает всю работу за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...