0

JQueryUIを使用して Windows ユーザー アカウントの単純な検索を実装しようとしています。

要件ユーザーがコントロールに姓または名を入力するHTML <input>と、その検索項目のフルネームと (usernames) のすべての可能な一致が返される必要があります。サーバーは以下のように結果を返しますが:

ここに画像の説明を入力

問題:<input>ボックスに検索語が表示され、オプションのない「白い」ドロップダウンが表示されます。 ここに画像の説明を入力

JQueryコード:

                        $(document).ready(function () {
                        $("#nameSearch").autocomplete({
                            source: function (request, response) {
                                $.ajax({
                                    type: "POST",
                                    contentType: "application/json; charset=utf-8",
                                    url: "Search.aspx/GetUserDetails",
                                    data: "{'username':'" + request.term + "'}",
                                    dataType: "json",
                                    async: true,
                                    success: function (data) {
                                        response($.map(data, function (item) {
                                            return {
                                                value: item.username
                                            }
                                        }));

                                    },
                                    error: function (xhr, textStatus, errorThrown) {
                                        var errorMessage = "Ajax error: " + this.url + " textStatus: " + textStatus + " errorThrown: " + errorThrown + "  xhr.statusText: " + xhr.statusText + " xhr.status: " + xhr.status;
                                        alert(errorMessage);
                                        if (xhr.status != "0" || errorThrown != "abort") {
                                            alert(xhr.responseText);
                                        }
                                    }
                                });
                            }
                        });
                    });

コードビハインド

[WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static Person[] GetUserDetails(string username)
    {
        List<Person> allUsers = new List<Person>();

        PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "abcd",
        "dc=abcdH,dc=com");

        UserPrincipal qbeUser = new UserPrincipal(ctx);

        qbeUser.GivenName = username;

        PrincipalSearcher srch = new PrincipalSearcher(qbeUser);
        foreach (var found in srch.FindAll())
        {
            Person user = new Person();
            user.userDetails = found.DisplayName + " (" + found.SamAccountName + ")";
            allUsers.Add(user);
        }
        qbeUser = null;
        qbeUser = new UserPrincipal(ctx);

        qbeUser.Surname = username;

        PrincipalSearcher srch1 = new PrincipalSearcher(qbeUser);
        foreach (var found in srch1.FindAll())
        {
            Person user = new Person();
            user.userDetails = found.DisplayName + " (" + found.SamAccountName + ")";
            allUsers.Add(user);
        }
        qbeUser = null;
        qbeUser = new UserPrincipal(ctx);

        qbeUser.SamAccountName = username;

        PrincipalSearcher srch2 = new PrincipalSearcher(qbeUser);
        foreach (var found in srch2.FindAll())
        {
            Person user = new Person();
            user.userDetails = found.DisplayName + " (" + found.SamAccountName + ")";
            allUsers.Add(user);
        }

        //allUsers.Sort();
        return allUsers.ToArray();


    }
    public class Person
    {
        public string userDetails { get; set; }
    }

ここで何か間違ったことをしているに違いありませんが、すぐに見つけることはできません。SOの回答から多くの異なるスニペットを試しましたが、私の問題には合いませんでした。

4

2 に答える 2

1

これが当てはまるかどうかはわかりませんが、MVC4 ではコントローラーにオートコンプリートを使用しており、戻り行は次のとおりです。

return Json(items, JsonRequestBehavior.AllowGet);

アイテムがリストで、戻り値の型が JsonResult の場合

于 2013-10-28T12:48:52.393 に答える