jQuery自动完成问题:不显示从Web服务返回的所有数据

时间:2012-05-24 20:14:34

标签: jquery asp.net jquery-ui

我在我的页面上实例化了一个调用asp.net Web服务方法的jQuery自动完成扩展程序。自动完成扩展程序连接到文本框的keyup事件。我的Web服务设置为仅返回与文本框中输入的文本匹配的前十行。

我遇到的问题很奇怪。当我输入“veriz”时,Web服务返回与该字符串匹配的十个记录,但只有前五个记录显示在自动完成控件中。但是,当我搜索“verizo”时,Web服务返回相同的10个结果,并显示所有10个结果。

有没有人见过像这样的问题?有什么建议吗?

<script type="text/javascript">
    $(document).ready(function() {
        $('#autocomplete').keyup(function() {
            $.ajax({
                type: "POST",
                url: "http://localhost/dlaJQuery/lookups.asmx/doJQueryLookup",
                dataType: "json",
                data: "{'count':'10','type':'" + $('#seltype').val() + "','search':'" + $('#autocomplete').val() + "'}",
                contentType: "application/json; charset=utf-8",
                success: function(data) {

                    var newData = [];
                    $.each(data.d, function() {
                        newData.push({ id: this.split('|')[1], value: this.split('|')[1], label: this.split('|')[0] + ' (' + this.split('|')[1] + ')' });
                    });

                    $('#autocomplete').autocomplete({
                        minLength: 3,
                        source: newData,
                        focus: function(event, ui) {
                            $('#autocomplete').val(ui.item.label);
                            return false;
                        },
                        select: function(event, ui) {
                            $('#autocomplete').val(ui.item.label);
                            return false;
                        }
                    });
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    alert(textStatus);
                }
            });
        });
    });

网络服务方法:

[WebMethod()]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string[] doJQueryLookup(string count, string type, string search)
{
    SqlConnection objConn = new SqlConnection(ConfigurationManager.ConnectionStrings["connSys"].ConnectionString);
    List<string> EntityList = new List<string>();
    try
    {
        objConn.Open();
        SqlCommand objCommand = new SqlCommand();
        objCommand.Connection = objConn;
        objCommand.CommandType = CommandType.StoredProcedure;
        objCommand.CommandText = "dbo.csp_jquery_lookup";
        objCommand.Parameters.AddWithValue("@numResults_in", count);
        objCommand.Parameters.AddWithValue("@elType_in", type);
        objCommand.Parameters.AddWithValue("@sSearch_in", search);


       SqlDataReader objReader = objCommand.ExecuteReader();
        while (objReader.Read())
        {
            EntityList.Add(
                objReader[1] + "|" + objReader[0]                    
            );
        }
        objReader.Close();
        objConn.Close();

        return EntityList.ToArray();
    }
    catch (Exception e)
    {
        Console.WriteLine("{0} Exception caught.", e);
        return null;
    }
}

0 个答案:

没有答案