簡體   English   中英

通過 ajax 使用實體數據庫填充下拉列表

[英]Populate a dropdown with entity database via ajax

正如標題所說,我正在嘗試使用 ajax 從我的 ApiController 填充下拉列表,但我有點迷茫。 我基本上有一個實體表,它帶回了一堆部門名稱。 調試后,我知道我的表正在帶回數據,因為它顯示了部門名稱。 所以我認為問題主要在於ajax。 當我查看頁面時,下拉列表只顯示“未選擇任何內容”並且有一個空列表。 在我的 ApiController 中,我有:

    [RoutePrefix("Api/Request")]
    public class NewUserController : ApiController
    {
        private readonly ZeusEntities _zeus_Entity;

        public NewUserController(ZeusEntities zeus)
        {
            _zeus_Entity = zeus;
        }

        [Route("Departments")]
        [HttpGet]
        [CustomApiAuthorize(Roles = UserRole.HR)]
        public async Task<IHttpActionResult> GetDepartments()
        {
            var departments = await _zeus_Entity.DEPARTMENT.Where(z => z.B_DELETE == 0).Select(z => z.S_NAME).Distinct().ToListAsync();

            return Ok(departments);
        }
     }

在我看來,我有:

<div class="form-group col-xs-12 col-sm-4">
     <div class="input-group ">
          <span class="input-group-addon white">Department</span>
          <select class="form-control gray" id="departmentSelect" type="text" </select>
     </div>
</div>

排隊:

$.ajax({
    type: "GET",
    url: "@Url.Action("Departments", "Api/Request")",
    data: "{}",
    success: function (data) {
        var s = '<option value="-1">Please Select a Department</option>';
        for (var i = 0; i < data.length; i++) {
            s += '<option value="' + data[i].I_PATTERNID + '">' + data[i].S_NAME + '</option>';
        }
        $("#departmentSelect").html(s);
    }
});

你能指出我正確的方向嗎? 謝謝

因此,我將 ajax for 函數更改為 $.each 並意識到我正在調用表列名稱而不是分配給數據的變量名稱。

$.each(deptList, function (key, department) {
       departmentsHtml += "<option value='" + department.DeptId + "'>" + department.Department + "</option>"
 });

我覺得我忽略了這一點很愚蠢。 盡管如此,這解決了我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM