使用jQuery自动完成查询远程数据源

时间:2012-02-13 17:47:01

标签: asp.net jquery-ui

我尝试使用jQuery UI自动完成小部件http://jqueryui.com/demos/autocomplete/#remote来实现asp.net文本框。

小部件的source属性要求字符串指向将返回JSON数据的URL资源。我有一个aspx页面将返回以下内容:

背后的代码:

private void GetWidgets(string name)
{
    var jscriptSerializer = new JavaScriptSerializer();
    var widgets = jscriptSerializer.Serialize(GetMatchingWidgets(name));
    var script = "Widgets = {\"Widget\": " + widgets + "};";

    Page.ClientScript.RegisterStartupScript(Page.GetType(), "JSON", script, true);
}

问题:

  1. 文档说The request parameter "term" gets added to that URL. - 我应该能够将“term”作为查询字符串参数正确吗?
  2. 我是否必须将JSON设置为客户端上的变量,或者小部件是否负责绑定而不必执行任何其他操作?
  3. 我错过了什么吗?

    我会试一试,只是“搞清楚”但我没有足够的时间花在这个解决方案上。

    总是感谢帮助。

1 个答案:

答案 0 :(得分:1)

是的,term是QueryString参数的名称。您需要做的就是以预期的格式返回json数据。例如,这是我使用的类......

/// <summary>
/// JQuery UI Autocomplete plugin expects an object with "value" and/or "label" property.
/// </summary>
public class AutoCompleteData
{
    /// <summary>
    /// custom property
    /// </summary>
    public string id { get; set; }

    /// <summary>
    /// value is shown in text box after selection
    /// </summary>
    public string value { get; set; }

    /// <summary>
    /// label is shown in drop down list
    /// </summary>
    public string label { get; set; }
}

例如......

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

AutoCompleteData[] d = GetMatchingWidgets(term)
    .Select(x => new AutoCompleteData {
        label = x.widgetLabel,
        value = x.widgetValue
    }).ToArray();

return jscriptSerializer.Serialize(d);