2016-06-29 5 views
0

Ich habe eine Liste von Studenten, die ich für jede von ihnen Rollen in einer Dropdown-Liste Multiselect zuweisen kann, Buut, wenn ich die Rollen eins oder zwei es ändert Für alle Schüler in der Tabelle, aber jeder Schüler ist individuell. Wenn ich einem Schüler einen Rollenassistenten zuteile, sollte es nur für diesen Schüler sein.Update Mehrfachauswahl Dropdown-Liste für einzelne Daten in einer Tabelle

<html ng-app="myApp"> 
    <div ng-controller="MyController"> 
     <tbody> 
      <tr ng-repeat="S in SList"> 
       <td width="33%">{{S}}</td> 
       <td width="33%"> 
        <div ng-dropdown-multiselect="" extra-settings="dropdownSetting" options="Categories" selected-model="CategoriesSelected" checkboxes="true"> 
        </div> 
       <button type="submit" class="btn btn-primary">Submit</button> 
       </td> 
      </tr> 
     </tbody> 
    </div> 
    <script src="../../javascript/lodash.js"></script> 
    <script src="../../javascript/angular.js"></script> 
    <script src="../../javascript/angularjs-dropdown-multiselect.js"></script> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> 
    <script src="../../javascript/AngularControllers/Controllers.js"></script> 
    <script src="../../javascript/ui-bootstrap-tpls-1.3.3.js"></script> 
</html> 

DIES IST mein Controller, die ich bereits den Teil

var app = angular.module('MyApp', ['angularjs-dropdown-multiselect']); 
app.controller('multiselectdropdown', ['$scope', '$http', function ($scope, $http) { 

    //Loading data to the table 
    var urlBase = '../Myhandler.ashx'; 

    this.getSList = function() { 
     $http.get(urlBase, { 
      params: { 
       plug: "MyClassname", 
       cmd: "MyMethodName" 
      } 
     }) 
     .success(function (Students) { 
      $scope.SList = Students; 
     }) 
     .error(function (error) { 
      $scope.status = 'Unable to load customer data: ' + error.message; 
     }); 
    } 

    this.getSList(); 
    //define object 
    $scope.CategoriesSelected = []; 
    $scope.Categories = []; 
    $scope.dropdownSetting = { 
     scrollable: true, 
     scrollableHeight : '200px' 
    } 
    //fetch data from database for show in multiselect dropdown 
    $http.get('/home/getcategories').then(function (data) { 
     angular.forEach(data.data, function (value, index) { 
      $scope.Categories.push({ id: value.CategoryID, label: value.CategoryName }); 
     }); 
    }) 
    //post or submit selected items from multiselect dropdown to server 
    $scope.SubmittedCategories = []; 
    $scope.SubmitData = function() { 
     var categoryIds = []; 
     angular.forEach($scope.CategoriesSelected, function (value, index) { 
      categoryIds.push(value.id); 
     }); 

     var data = { 
      categoryIds: categoryIds 
     }; 

     $http({ 
      method: "POST", 
      url: "/home/savedata", 
      data:JSON.stringify(data) 
     }).then(function (data) { 
      $scope.SubmittedCategories = data.data; 
     }, function (error) { 
      alert('Error'); 
     }) 
    } 
}]) 

DAS IST MEIN PROBLEM multidropdownlist Zusammenhang eingefügt haben: wenn ich Optionen in einer Dropdownlist wählen Sie es für alle Datensatz in der Tabelle ändert. Wie kann ich die Änderungen nur für den Schüler machen, den ich möchte?

Dank

Antwort

0

Alle Ihre Dropdown scheint das gleiche Modell

selected-model="CategoriesSelected" 

Sie für jeden Schüler eine eigene Liste verwenden, um zu teilen, zum Beispiel

selected-model="S.CategoriesSelected" 

, die Sie dann für jeden Schüler zu initialisieren haben

+0

Danke, aber würden Sie bitte helfen, wie kann ich diese Änderung in tha Controller machen? – user3122648

+0

Ich weiß nicht, wo deine SList definiert ist, aber dort musst du über S in SList iterieren und S.CategoriesSelected = []; – Thorsten

+0

Ich mache nicht sicher was du im Submit machen willst, dort musst du die Daten für alle Studenten oder nur einen Studenten hochladen? Sie müssen natürlich S.CategoriesSelected posten, aber nicht genug über Ihre Anwendung wissen. – Thorsten

0

die Sie interessieren, machen CategoriesSelected als Objekt mit Schülernamen als Schlüssel.

$scope.SList = ['student1', 'student2', 'student3']; 
$scope.CategoriesSelected = {}; 

dann in HTML:

<tbody> 
    <tr ng-repeat="S in SList"> 
    <td width="33%">{{S}}</td> 
    <td width="33%"> 
     <div ng-dropdown-multiselect="" extra-settings="dropdownSetting" options="Categories" selected-model="CategoriesSelected[S]" checkboxes="true"></div> 
     <button type="submit" class="btn btn-primary">Submit</button> 
    </td> 
    </tr> 
</tbody> 
+0

Ich habe gerade meine Frage aktualisiert, ich aded // Lade Daten in die Tabelle in den Controller-Teil um zu zeigen, wie ich den Student Teil fülle, las ich es aus der Datenbank und ich lade es in die Tabelle in einem ng-repeat in diesem Fall habe ich meine $ scope.SList in. Erfolg und wenn ich die Lösung implementieren, lässt es mich überhaupt nicht auswählen – user3122648

Verwandte Themen