0

$(function() {
$(".tb").autocomplete({
    source: function(request, response) {
        $.ajax({
        url: "MyService.asmx/GetCompletionList",
        data: "{ 'prefixText': '" + request.term + "' }",
            dataType: "json",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            dataFilter: function(data) { return data; },
            success: function(data) {
                response($.map(data.d, function(item) {
                    return {
                        value: item.Email
                    }
                }))
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert(textStatus);
            }
        });
    },
    minLength: 1
});

});

これは私の jQuery コードとWebServiceメソッドです。誰でも私を助けることができますか?GetCompletionList WebServiceメソッドは文字列のリストを返しますが、すべての値 についてTextBoxショーでオートコンプリートしますundefined

public List<string> GetCompletionList(string prefixText)
{
    RegistrationBAL _rbal = new RegistrationBAL(SessionContext.SystemUser);
    DataSet ds = new DataSet();
    _rbal.LoadByContextSearch(ds, prefixText);

    List<string> myList = new List<string>();
    foreach (DataRow row in ds.Tables[0].Rows)
    {
        myList.Add((string)row[0]);
    }
    return myList.ToList();       
}
4

1 に答える 1

0

次のようにajax呼び出しでデータを変更してみてください

asp コントロールに対してオートコンプリートが実行された場合

 data: "{'prefixText':'" + document.getElementById("<%= ContactName.ClientID %>").value + "'}",

または、次のように与えます

data: "{'prefixText':'" + document.getElementById("requiredID").value + "'}",

オートコンプリートが機能する編集された回答

function SearchText() {
    $(".autosuggest").autocomplete({
        source: function (request, response) {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "AutoCompleteService.asmx/GetAutoCompleteData",
                data: "{'PhoneContactName':'" + document.getElementById("<%= ContactName.ClientID %>").value + "'}",
                dataType: "json",
                success: function (data) {
                    response(data.d);
                },
                error: function (result) {
                    //alert("Error");
                }
            });
        }
    });
}

これはあなたのajax関数に似ていますが、サーバー側では、データベースから値を取得する以下のWebサービスを使用しました

public class AutoCompleteService : System.Web.Services.WebService
{
    [WebMethod]
    public List<string> GetAutoCompleteData(string PhoneContactName)
    {
        List<string> result = new List<string>();
        string QueryString;
        QueryString = System.Configuration.ConfigurationManager.ConnectionStrings["Admin_raghuConnectionString1"].ToString();

        using (SqlConnection obj_SqlConnection = new SqlConnection(QueryString))
        {
            using (SqlCommand obj_Sqlcommand = new SqlCommand("select DISTINCT PhoneContactName from PhoneContacts where PhoneContactName LIKE +@SearchText+'%'", obj_SqlConnection))
            {
                obj_SqlConnection.Open();
                obj_Sqlcommand.Parameters.AddWithValue("@SearchText", PhoneContactName);
                SqlDataReader obj_result = obj_Sqlcommand.ExecuteReader();
                while (obj_result.Read())
                {
                    result.Add(obj_result["PhoneContactName"].ToString().TrimEnd());
                }
                return result;
            }
        }
    }

}

..これが役立つことを願っています:D

于 2012-11-03T09:56:43.600 に答える