2

我有一个很长的人名下拉列表。多达2,000个名字。我想通过一次将下拉列表限制为名称的子集来更容易找到用户感兴趣的名称。我通过创建一系列 26 个链接(A、B、C ... Z)来完成此操作,这些链接调用后面代码中的一个方法,该方法仅使用那些以用户单击的字母开头的名称填充下拉列表。

这一切都很好,但我希望能够使用 AJAX 来完成下拉列表的更新,而无需刷新页面。我想将 jQuery 用于 AJAX 功能而不是 ASP.NET AJAX。

我的问题是我不确定如何执行存储过程,然后通过 jQuery AJAX 将下拉列表与新数据集“重新绑定”。任何可能提供和示例或演练的建议或资源?谢谢你。

4

2 回答 2

6

给你一些方向。

首先创建一个页面、webservicehttphandler,它将接收您的帖子并返回 json。

处理程序:

public void GetNames(HttpContext context)
{
    context.Response.ContentType = "application/json";
    context.Response.ContentEncoding = Encoding.UTF8;

    var results = DataAccess.GetNames(context.Request["letter"]);

    string json = //encode results to json somehow, json.net for example.

    context.Response.Write(json );
}

标记

<ul>
  <li>A</li>
</ul>

<select id="names">
</select>

执行$.post的脚本

$(function(){
  $("li").click(function(){
    var letter = $(this).text();
    $.post("SomeUrl/GetNames", {letter: letter}, function(data){
     var $sel = $("#names").empty();
     $.each(data, function(){
       //this assumes the json is an array in the format of {value: 1, name:'joe'}
       $sel.append("<option value='" + this.value + "'>" + this.name+ "</option>");
     });
    }, "json");
  });
});

这应该是关于如何完成任务的一个很好的大纲。

一些额外的资源。

于 2011-03-03T16:26:15.680 回答
0

jQuery Autocomplete插件可能是您的有效解决方案。

于 2011-03-03T15:26:46.663 回答