2017-04-03 17 views
1

私は会社、空き室、インタビュー、QuestionBlocksを持つデータベースを持っています。ここでAJAX(ASP.NET MVC)経由でデータベースからデータを選択

は空席とインタビューに接続質問ブロックに接続されているので、空室は、当社に接続されていること

enter image description here

のスキーム、インタビューです。

私は会社のDropdownListsを認識していて、私は空きのドロップダウンリストの更新を選択します。ここで

が表示

<div style="width: 100%; margin-left: 20px;height: 15%;padding-top: 20px;"> 
    @Html.DropDownList("Company", ViewBag.Companies as SelectList, "Компания", new { @class = "greeting", @style = "width:30%; margin-left:20px;" }) 
    <select class="greeting" id="vacancy" name="id" style="width:30%; margin-left:150px;" data-url="@Url.Action("Vacancies","Questions")"> 
     <option value="" disabled selected>Вакансия</option> 
    </select> 
</div> 

そしてAjax呼び出し

<script> 
    $(function() { 
     $("#Company").change(function (e) { 
      var $vacancy = $("#vacancy"); 
      var url = $vacancy.data("url") + '?companyId=' + $(this).val(); 
      $.getJSON(url, function (items) { 
       $.each(items, function (a, b) { 
        $vacancy.append('<option value="' + b.Value + '">' + b.Text + '</option>'); 
       }); 
      }); 
     }); 
    }); 
</script> 

のためのコードは、だから私は必要なものを私はこの

enter image description here

のようなビューを持っています。

コントローラにリクエストし、VacancyIdに関連するQuestionBlockを見つける必要があります。

私が理解したように、dropdownlistのVacancyIdをコントローラに渡してSQL操作を行い、JSONを返す必要がありますか?

どうすればいいですか?

UPDATE

感謝のは、回答@CuriousDevのために、それは選択した項目に適しています。

もう1つ必要ですが、このようにQuestion1-Question10を表示する必要があります。ここで

enter image description here

私の対処法私はdivの中で末端と表示データをバックアップするために、AJAX呼び出しを記述する必要がどのように

public ActionResult QuestionBlocks(int vacancyId) 
{ 
    var items = db.QuestionBlocks 
     .Where(x => x.Interview.VacancyId == vacancyId) 
     .Select(x => new 
     { 
      ID = x.Block_ID.ToString(), 
      Question1 = x.Question1, 
      Question2 = x.Question2, 
      Question3 = x.Question3, 
      Question4 = x.Question4, 
      Question5 = x.Question5, 
      Question6 = x.Question6, 
      Question7 = x.Question7, 
      Question8 = x.Question8, 
      Question9 = x.Question9, 
      Question10 = x.Question10, 
     }) 
     .ToList(); 
    return Json(items, JsonRequestBehavior.AllowGet); 
} 

のですか?

+0

あなたはすでに解決策を見つけましたが、あなたが解決策を認識しているようです。 – Curiousdev

+0

私の質問は、正しく要求を取得する方法と、サーバー側でメソッドを書く必要がある方法です。 @Curiousdev –

+0

'$("#Company ")の代わりに質問を記入する必要がある'空席状況 'の変更については、 'vacancy'ドロップダウンで今行ったことと同じになります。 e){'$(" vacancy ")を変更する(function(e){' companyId'の代わりに 'vacancyid'を渡す必要があります。空きのための書き込みを持っている – Curiousdev

答えて

0

こんにちは私はあなたの要件を満たしているかどうかはわかりません。コントローラ

public ActionResult Vacancies(int companyId) 
{ 
    // Logic to get the vacancies data 
    var result = "abc"; 
    return Json(new { Vacancies = result }, JsonRequestBehavior.AllowGet); 
} 

については

$("#Company").change(function (e) { 
    var companyId = $(this).val(); 
    var model = { 
     companyId:companyId 
    }; 

    $.ajax({ 
     url: '@Url.Action("Vacancies","Questions")', 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify(model), 
     type: 'POST', 
     dataType: 'json', 
     processData: false 
    }) 
    .success(function (result) { 
     console.log(result); 
     console.log(result.Vacancies); 

    }) 
    .error(function (xhr, status) { 
    alert("error"); 
}); 

}); 

は、私は上記の実装はあなたを助け願っています。 おかげ

0

以下は、あなたのテーブル構造を作成し、それがドロップダウン変更またはあなたがSuccessに望んでいるいくつかの他のイベントになる可能性がアクションメソッドからJSONを取得し、あなたは以下の望んでいると体にそれを追加するAJAX呼び出しがあるだけでサンプルコード

場合
$.ajax({ 
      url: '@Url.Action("QuestionBlocks","YourController")', 
      contentType: 'application/json; charset=utf-8', 
      data: JSON.stringify(model), 
      type: 'Get', 
      dataType: 'json', 
      processData: false 
     }) 
     .success(function (result) { 
      // Here do some stuff with your JSON to bind that in Table 
     var trHTML = ''; 

     $.each(data.Countries, function (i, item) { 

      trHTML += 'Your Table Structure'; 
     }); 

      $('#YourID').append(trHTML); 
     }) 
     .error(function (xhr, status) { 
     alert("error"); 
    }); 
+1

ありがとう、私はしようとします。 –

関連する問題