2016-05-09 12 views
0

Hallo Ich bin neu in AngularJS und ich versuche, Werte für meine Spalte Dropdown in einem UI-Gitter zu füllen. Derzeit wird nur undefined für die gesamte Liste angezeigt.Füllen Dropdown-Werte aus der Datenbank mit JavaScript-Service

Hier ist meine Spaltendefinition:

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

Hier meine Service-Funktion ist:

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); 
    } 
} 

Hier Methode mein Controller ist:

[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; 
    } 
} 

Hier ist mein ui Raster:

<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> 

Jede Hilfe wäre sehr willkommen. Es macht es zu meiner Controller-Methode und scheint zu funktionieren, aber in der Anzeige listet es nur undefined immer wieder auf. Danke

+1

Also was ist dein Winkelcode? Sie stellen eine Methode zum Abrufen von Daten aus dem Speicher bereit. Teile deine Sichtweise. – user3272018

+0

Ich musste einen cellFilter von griddropdown hinzufügen: editDropdownOptionsArray: editDropdownIdLabel: editDropdownValueLabel: row.entity.employees.fullname. Schreiben Sie einen Filter, um den Wert der ID zuzuordnen, wenn die Zelle den Fokus verliert. – jason316

Antwort

0

Ich musste einen CellFilter von griddropdown:editDropdownOptionsArray:editDropdownIdLabel:editDropdownValueLabel‌​:row.entity.employees.fullname hinzufügen. Schreiben Sie einen Filter, um den Wert der ID zuzuordnen, wenn die Zelle den Fokus verliert.

.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; 
}; 
Verwandte Themen