J'ai un plunker. J'utilise angulaire-ui-grille avec 2 niveaux de rangées expansibles.Grille d'interface utilisateur angulaire avec plusieurs niveaux extensibles et cellules fusionnées
- Personnes - extensible
- Amis - extensible
- Animaux - régulier
Le Les gens niveau a cette expandableRowTemplate
<div ui-grid="row.entity.subGridOptions" ui-grid-expandable style="height:150px;"></div>
et ces options:
$scope.gridOptions = {
expandableRowTemplate: 'expandableRowTemplate.html',
expandableRowHeight: 150
}
Le Amis niveau a ce expandableRowTemplate:
<div ui-grid="row.entity.subGridOptions" style="height:150px;"></div>
et ces options:
data[i].subGridOptions = {
columnDefs: [ {name:"Id", field:"id"},{name:"Name", field:"name"} ],
data: friends,
expandableRowTemplate: 'expandableRowTemplate2.html',
rowTemplate: 'rowTemplate.html'
}
Le Animaux niveau a des options comme celui-ci:
friends[j].subGridOptions = {
columnDefs: [ {name:"Name", field:"name"} ],
data: friends[j].pets
}
Au niveau Amis, je souhaite être en mesure d'afficher un nom de groupe avec des cellules fusionnées et un seul texte. Un peu comme un en-tête, mais dans la liste. La liste sera triée à l'avance, donc je peux simplement insérer un certain nombre de noms de groupes là où je les veux. Cela se fait en ajoutant une coutume rowtemplate (voir ci-dessus) à ce niveau et de tester l'identifiant de la ligne comme celui-ci (en réalité, je vais tester une propriété):
<div>
<div ng-if="row.entity.id !== 0">
<div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" ui-grid-cell></div>
</div>
<div ng-if="row.entity.id === 0" >
<div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name"
class="ui-grid-cell" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }"
>
</div>
<div class="ui-grid-cell-contents">
<div>
{{row.entity.name}}
</div>
</div>
</div>
</div>
De cette façon, fonctionne très bien dans d'autres exemples lorsque vous n'utilisez pas de lignes extensibles.
Lors de l'utilisation des lignes extensibles, il semble que la ligne où je veux montrer le nom de groupe est rendu deux fois, une fois correctement, et une fois dans la cellule RowHeader (Voir Rosanne Barret dans l'image ci-dessous)
comment puis-je empêcher cela? Je veux seulement que le texte soit montré une fois
Voulez-vous inclure la première entrée ('Rosanne') dans la liste d'amis, puis ajouter un en-tête personnalisé ou omettre la première entrée? – karthick
omettre la première entrée – stombeur
J'ai ajouté une solution avec un en-tête et la liste de toutes les entrées dans la liste d'amis. Voir si ça aide. Pourquoi voulez-vous omettre la première entrée? N'avez-vous pas besoin de montrer toute la liste d'amis en tant que grille extensible? – karthick