2017-05-23 4 views
0

Je récupère deux ensembles de données à partir d'un serveur MSSQL. Set un: (qui est utilisateur spécifique, donc ce changement de set)Primeng Sélection de données avec des données bizarres

[ 
    { 
    "TargetID": 1, 
    "Enabled": true 
    }, 
    { 
    "TargetID": 2, 
    "Enabled": true 
    } 
] 

Ensemble de deux:

[ 
    { 
    "Platform": "BB", 
    "ID": 1 
    }, 
    { 
    "Platform": "MDL01", 
    "ID": 2 
    }, 
    { 
    "Platform": "MDLEX", 
    "ID": 4 
    } 
] 

Placez deux Renseigne le Primeng Datatable. Définir sa valeur TargetID se réfère à l'ID dans l'ensemble deux. Chaque fois que la valeur TargetID est la même que l'ID dans l'ensemble deux, je dois vérifier cela dans le Datatable.

datatable:

<div class="col-md-12"> 
      <p-dataTable [value]="doelplatformen" [rows]="3" class="thumbnail" resizableColumns="true" [paginator]="true" [pageLinks]="0" 
       [rowsPerPageOptions]="[3,5,10]" emptyMessage="Loading data" [(selection)]="selectedDoelplatformen" (onRowSelect)="onRowSelectDoelplatform($event)"> 
       <p-column [style]="{'width':'30px'}" selectionMode="multiple"></p-column> 
       <p-column [style]="{'width':'40px'}" field="ID" header="ID"></p-column> 
       <p-column field="Platform" header="Platform"></p-column> 
      </p-dataTable> 
     </div> 

Je ne l'ai pas essayé beaucoup parce que je ne sais pas comment cela pourrait se faire? Je n'arrive même pas à comprendre comment coder les lignes sélectionnées ...

Toute aide serait grandement appréciée! Merci d'avance!

+0

Votre problème n'est pas clair pour moi. Si TargetID de set-one est le même que l'ID de set-two, que devrait-il se passer exactement alors? – hiper2d

+0

et où est votre code pour le Datatable? – Alex

+0

Ensuite, la ligne avec le même ID que TargetID doit être sélectionnée. Je vais mettre à jour la question avec le code datatable –

Répondre

1

Vous pouvez mapper votre set1 à un tableau de Ids qui devrait être sélectionné:

let selectedIds = set1.map(it => it.TargetID); 

Ensuite, prenez ces set2 dossiers qui Ids existe dans ce tableau:

this.selectedItems = set2.filter(inv => selectedIds.indexOf(inv.ID) != -1); 

Utilisation selection attribut de la table pour sélectionner des rangées:

<p-dataTable [value]="items" [(selection)]="selectedItems"> 
... 
</p-dataTable> 

Plunkr

+0

C'est parfait !!!! Merci beaucoup! C'est ma dernière semaine pour terminer ce projet pour ma thèse et c'était la dernière chose que je n'arrivais pas à comprendre: D Tu m'as sauvé! –

+0

Si je transmets un tableau à p-datatable, les éléments du tableau ne sont pas présélectionnés. Comment la table compare-t-elle le tableau sélectionné avec le tableau de valeur. –

+0

@SaurabhTiwari, il compare les objets de ligne. Si vous avez besoin de comparer un champ tel que id, vous devez utiliser la propriété rowTrackBy du composant p-dataTable. – hiper2d