2015-09-18 146 views
-1

在我的控制器中,我有這個類別列表要顯示在我的視圖中。這是我申請的報告部分。根據所選下拉菜單顯示下拉列表

public SelectList getFields() 
    { 
     List<SelectListItem> field = new List<SelectListItem>(); 

     field.Add(new SelectListItem { Text = "Department", Value = "dept" }); 
     field.Add(new SelectListItem { Text = "Referrer", Value = "ref" }); 
     field.Add(new SelectListItem { Text = "Monthly", Value = "cd_key" }); 

     return new SelectList(field, "Value", "Text"); 

    } 

    public ActionResult HR_RecRep() 
    { 
     ViewBag.fields = getFields(); 
     return View(); 
    } 

然後在我的視野:

<script type="text/javascript"> 
$(document).ready(function() { 
    //this function will call the views with id=category 
    $('#fields').change(function() { 
     //Get the selected value from the dropdownlist 
     var rep = $(this).val(); 
     //alert(cat); 
     if (rep.toUpperCase() == "DEPT") { 
      var text = document.getElementById("dept"); 
      text.style.display = "inline"; 

      $.getJSON('/Reports/getDepartment/', function (data) { 
       var items = '<option>Select Department...</option>'; 
       $.each(data, function (i, department) { 
        items += "<option value='" + department.Value + "'>" + department.Text + "</option>"; 
       }); 
       $('#department').html(items); 
      }); 

      var textValue = document.getElementById("ref"); 
      textValue.style.display = "none"; 
     } 
    }); 
}); 

</script> 
<div style="border:0px solid black;width:950px;"> 
Reports By: @Html.DropDownList("fields", String.Empty) 
<span id="dept" style="display:none;"><select id="department" name="department"></select></span> 
<span id="ref" style="display:none;"><select id="referrer" name="referrer"></select></span> 

在我看來,它成功地顯示在報告中的字段按款。 我希望每當我在類別中引用Department的下拉列表中選擇「dept」時,它應該顯示數據庫中所有部門的下拉列表。

這裏是我的控制器獲取部門名單。

public SelectList getDepartment() 
    { 
     ViewBag.department = new SelectList(db.rms_departments, "dept_id", "dept_shortname"); 
     return ViewBag; 
    } 

當我嘗試使用代碼時,在報告中選擇部門時,它不顯示部門的下拉列表。同樣,對於推薦人,當我從下拉菜單中選擇它時,它應該顯示數據庫中所有員工的下拉菜單。

你能幫我嗎? 非常感謝。

也許這與我的腳本有關?

回答

1

你的問題是,你是不是從你的行動方法返回JSON,修改你的行動來回報JSON:

,並在劇本修改行:

items += "<option value='" + department.Value + "'>" + department.Text + "</option>"; 

到:

items += "<option value='" + department.dept_id+ "'>" + department.dept_shortname+ "</option>"; 
+0

我已經修改了我的控制器,但仍未顯示任何內容。有什麼與我的腳本?我不確定。 – Isay

+0

是的,你必須更新腳本以及我的編輯帖子 –

-1

我已經得到了答案。我只是將我的控制器代碼更改爲這一個:

public JsonResult getDepartment() 
    { 
     return Json(new SelectList(db.rms_departments, "dept_id", "dept_shortname"), JsonRequestBehavior.AllowGet); 
    }