2017-08-24 1 views
1

Mon formulaire a 2 grilles dessus. Lorsque vous sélectionnez un enregistrement dans la première grille, il remplit la deuxième grille avec les enregistrements associés. Cette grille secondaire a une colonne "PEERGROUP" et contiendra des valeurs comme "1", "2", etc.Comment créer une liste de valeurs uniques à partir d'une grille?

Je dois m'assurer qu'un utilisateur a sélectionné au moins 1 enregistrement appartenant à chaque groupe.

Je suis coincé à essayer de construire une liste contenant les valeurs d'ID de groupe unique:

function CheckSelectionForGroups(gridName) 
{ 
    //Get rows in grid 
    var view = $('#' + gridName).data('kendoGrid').dataSource.view(); 

    //Array to store the all distinct groups in the grid 
    var listOfGroups = []; 
    var listIndex = 0; 

    //Loop over the rows in the grid 
    for (var i = 0; i < view.length; i++) 
    { 
     //If the group is found in our list already, do nothing 
     if (listOfGroups[view[i].PEERGROUP]) 
      continue; 

     //If the group was not found in our list, add it to the list. 
     listOfGroups[listIndex] = view[i].PEERGROUP; 
     listIndex = listIndex + 1; 
    } 

    //TODO - Loop over user selection 
    // and compare groups against list of groups 
} 

Et voici une capture d'écran de certaines valeurs:

enter image description here

(Note: Le tableau est incomplet, car si je fais une capture d'écran après le traitement de la ligne suivante, il contiendrait incorrectement 3 valeurs: "1", "1", et "2")

Donc dans ce cas, je veux que listOfGroups ne contienne que les valeurs "1" et "2". L'instruction if dans ma boucle for n'évalue jamais à true. I suspect Javascript lance "1" à un 1 et essaie de tirer l'élément de listOfGroups à l'index 1. Mais je ne sais pas comment réparer ça?

Répondre

1

Vous pouvez utiliser un objet pour recueillir les ID, puis utilisez Object.keys pour obtenir un tableau de ces ID:

var dummyObject = {}; 
for (var i = 0; i < view.length; i++) { 
    dummyObject[view[i].PEERGROUP] = 0; 
} 
var listOfGroups = Object.keys(dummyObject);