2017-05-17 13 views
0

編集:以下のコードは、必要な人のために機能します!ASP.NET MVC(Active Directoryリクエスト)でJQueryを使用してドロップダウンリストを作成する

この質問は役に立ちましたか?私は検索バーに入力中にロードするドロップダウンリストを表示する必要があります。私が入力している間、タイプされているUsernameをActive Directoryで検索してから、ドロップダウンリストにすべてのオプションを表示します(たとえば、4文字の後に結果が表示される)。

私は1つの入力、1つのボタン、私がADにアクセスすることができるC#クラスからユーザーを検索するコントローラ機能を持つ単純なフォームを持っています。私はデータを取得するJQueryスクリプトを置いた。データは正しく取得されていますが、自動完成で表示できません。何か案は?

形式:

<form class="form-inline" method="post" action="~/Home/SearchUserResult"> 
     <label class="sr-only" for="inlineFormInput"> Nom et/ou Prénom </label> 
     <input type="text" class="form-control mb-2 mr-sm-2 mb-sm-0" name="searchName" id="searchName" placeholder="Nom et/ou prénom"/> 
     <button class="btn btn-primary" type="submit" id="searchValidate"> Rechercher </button> 
    </form> 

マイADサーチ機能:

public List<string> SearchUserByName(string name) 
    { 
     try 
     { 
      SearchResultCollection resultCollection; 
      DirectoryEntry ldapConnection = createDirectoryEntry(); 
      DirectorySearcher search = new DirectorySearcher(ldapConnection); 


      search.Filter = "(anr=" + name + ")"; 
      search.PropertiesToLoad.Add("displayName"); 
      resultCollection = search.FindAll(); 

      if (resultCollection.Count == 0) 
      { 
       return null; 
      } 
      else 
      { 
       foreach(SearchResult sResult in resultCollection) 
       { 
        lastName.Add(sResult.Properties["displayName"][0].ToString()); 
       } 
      } 
      return lastName; 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine("Exception caught:\n\n" + e.ToString()); 
     } 
     return null; 
    } 

} 

ここでは、コントローラの機能である。最後に、ここで私が持っているスクリプトがある@caner

public ActionResult SearchUserByName(string name) 
{ 
    ADManager adManager = new ADManager(); 
    List<string> lastName = adManager.SearchUserByName(name); 
    if (lastName != null) 
    { 
     ViewData["Names"] = lastName; 
     return Json(lastName,JsonRequestBehavior.AllowGet); 
    } 
    return null; 
} 

によって示唆今、データを取得しますが、表示しません(アラート(データ)で必要なすべての情報を取得します):

<script> 
     $(function() { 
      $("#searchName").autocomplete({ 
       source: function (request, response) { 
        $.ajax({ 
         url: "/Home/SearchUserByName", 
         type: "GET", 
         data: { name: $("#searchName").val() }, 
         contentType: "application/json;charset=utf-8", 
         dataType: "JSON", 
         success: function (data) { 
          alert(data) 
          response($.map(data, function (item) { 
           return { 
            label: item 
           } 
          })); 
         }, 
        }); 
       }, 
       minLength: 4 
      }) 
     }); 
    </script> 

EDITあなたの助けをありがとう:createDirectoryEntry()は、私はちょうどADへの接続を作成するために作られた機能です。 EDIT 2:あなたはjQueryの以外の何かで、私はこのようなすべてのもの

答えて

0

このスクリプトは、私の作品:

<script> 
     $(function() { 
      $("#searchName").autocomplete({ 
       source: function (request, response) { 
        $.ajax({ 
         url: "/Home/SearchUserByName", 
         type: "GET", 
         data: { name: $("#searchName").val() }, 
         contentType: "application/json;charset=utf-8", 
         dataType: "JSON", 
         success: function (data) { 
          alert(data) 
          response($.map(data, function (item) { 
           return { 
            label: item 
           } 
          })); 
         }, 
        }); 
       }, 
       minLength: 4 
      }) 
     }); 
    </script> 
1

するTry jqueryのオートコンプリートに開いていることを行うには、他のアイデアを持っている場合は...

スクリプト:

$(function() { 
     $("#searchName").autocomplete({ 
      source: function (request, response) {      
        $.ajax({ 
         url: "/YourController/SearchUserByName", 
         type: "POST", 
         data: { name: $("#searchName").val() }, 
         dataType: "JSON", 
         success: function (data) { 
          response($.map(data.lastName, function (item) { 
           return { 
            label: item 
           } 
          })); 
         }, 
        }); 
       }, 
       minLength: 4 
      }) 
}); 

とあなたのコントローラの方法:

public ActionResult SearchUserByName(string name) 
{ 
    . 
    . 
    . 

    return Json(lastName); 
} 
+0

私は試していますが、オブジェクトがjavascriptからオートコンプリートを処理できないというエラーが表示されます。私のヘッダーには、jqueryスクリプトsrcとJQuery UIスクリプトsrcがあります。 –

+0

私は修正を見つけました。一方、検索バーに入力すると結果が得られません。フォームを評価すると、私が望む結果が得られます。 Btw助けてくれてありがとう:) –

+0

おそらくjqueryライブラリの問題...喜んで助けて:) – caner

関連する問題