使用javascript服务填充数据库中的下拉值

Populate dropdown values from database using javascript service

本文关键字:数据库 javascript 服务 填充 使用      更新时间:2023-09-26

你好,我是AngularJS的新手,我正在尝试在ui网格中填充列下拉列表的值。目前,它只是在整个列表中显示未定义。

这是我的专栏定义:

{ field: "FullName", displayName: "Employee", editableCellTemplate: 'ui-grid/dropdownEditor', validators: { required: true }, minWidth: 150, width: "25%", cellFilter: 'mapEmployee', editDropdownIdLabel: 'Value', editDropdownValueLabel: 'Text', editDropdownOptionsArray: dataService.getEmployees() },

这是我的服务功能:

function getEmployees() {
  return $.ajax({
    url: '/EmployeeSkills/GetEmployees',
    type: 'POST',
    dataType: "json",
    success: getEmployeesComplete,
    error: getEmployeesFailed
  });
  function getEmployeesComplete(r) {
    return r;
  }
  function getEmployeesFailed(e) {
    $log.warn("Failed to get employees. " + e.data);
    return $q.reject(e);
  }
}

这是我的控制器方法:

[HttpPost]
public JsonResult GetEmployees()
{
    try
    {
        List<string> tecPosition = new List<string>() { "SUB", "" };
        IEnumerable<SelectListItem> Employees = db.Employees.Where(x => tecPosition.Contains(x.JobPosition) && x.Active).Select(c => new SelectListItem
        {
            Value = c.EmployeeNumber.ToString(),
            Text = c.FullName
        });
        return Json(new SelectList(Employees), JsonRequestBehavior.AllowGet);
    }
    catch (Exception e)
    {
        return null;
    }
}

这是我的ui网格:

<div class="row">
<div class="grid" ui-grid="gridOptions"
ui-grid-pagination
ui-grid-selection
ui-grid-edit
ui-grid-row-edit
ui-grid-validate
ui-grid-exporter
ui-grid-cellNav
style="height: 500px;">
</div>
</div>

如有任何帮助,我们将不胜感激。它确实进入了我的Controller方法,并且似乎正在工作,但在显示中,它只是一遍又一遍地列出未定义的。感谢

我不得不添加griddropdown:editDropdownOptionsArray:editDropdownIdLabel:editDropdownValueLabel‌​:row.entity.employees.fullname的cellFilter。当单元格失去焦点时,编写一个过滤器将值映射到id。

.filter('griddropdown', function () {
    return function (input, map, idField, valueField, initial) {
        if (typeof map !== "undefined") {
            for (var i = 0; i < map.length; i++) {
                if (map[i][idField] == input) {
                    return map[i][valueField];
                }
            }
        } else if (initial) {
            return initial;
        }
    return input;
};