1

我正在从 MSSQL 服务器检索两组数据。设置一:(这是用户特定的,所以这个设置会改变)

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

设置二:

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

设置两个填充 Primeng 数据表。Set one's TargetID value 指的是set one 中的ID。每当 TargetID 值与第二组中的 ID 相同时,我必须在数据表中检查这一点。

数据表:

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

我没有尝试太多,因为我不知道如何实现这一点?我什至无法弄清楚如何对选定的行进行硬编码......

任何帮助将不胜感激!提前致谢!

4

1 回答 1

3

您可以将您set1的 ID 映射到应选择的数组:

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

然后选择那些set2Ids 存在于该数组中的记录:

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

使用selection表的属性来选择行:

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

Plunkr

于 2017-05-24T12:32:16.570 回答