2015-06-17 5 views
7

Ich verwende ui Raster, um eine Liste von Daten anzuzeigen, und ich versuche, zunächst alle Zeilen zu erweitern.Wie wird angular ui grid zunächst alle Zeilen erweitert?

Ich versuche, dies in dem onRegisterApi Ereignisse zu tun:

scope.GridOptions = 
     { 
      data: properties, 
      columnDefs: 
      [ 
       { name: "Full Address", field: "FullAddress" }, 
       { name: "Suburb", field: "Suburb" }, 
       { name: "Property Type", field: "PropertyType" }, 
       { name: "Price", field: "Price", cellFilter: 'currency'}, 
       { name: "Status", field: "Status" }, 
       { name: "Sale Type", field: "SaleType" }, 
       { name: "Date Created", field: "CreateDate", cellFilter: "date:'dd/MM/yyyy HH:mma'"} 
      ], 
      expandableRowTemplate: 'template.html', 
      expandableRowHeight: 200, 
      onRegisterApi: (gridApi) => 
      { 
       scope.gridApi = gridApi; 
       gridApi.expandable.on.rowExpandedStateChanged(scope,(row) => 
       { 
        if (row.isExpanded) { 
         this.scope.GridOptions.expandableRowScope = row.entity; 
        } 
       }); 
       gridApi.expandable.expandAllRows(); 

      } 
     }; 

Aber der obige Code funktioniert nicht. Es sieht so aus, als wenn ich expandAllRows() aufrufen würde, die Zeilen werden noch nicht gerendert.

+0

BTW: Ich benutze Typoskript, aber es hat wenig Unterschied mit Javascript. –

Antwort

1

Ich finde ich alle Zeilen mithilfe von rowsRendered Ereignis erweitern:

gridApi.core.on.rowsRendered(scope,() => { 
     if (!gridApi.grid.expandable.expandedAll && !initialized) 
     { 
      gridApi.expandable.expandAllRows(); 
      initialized = true; 
     } 
}); 

ich eine Variable verwendet haben, initialisiert zu identifizieren, wenn dies das erste Mal ist Zeilen wiedergegeben werden, wie ich zunächst nur alle Zeilen erweitern möchten.

+1

Können Sie ein funktionierendes Beispiel für Ihre Lösung bereitstellen? Entweder mache ich etwas falsch von TypScript zu JavaScript oder das funktioniert nicht für mich mit v3.0.0. Vielen Dank! – Kabb5

-1

Ich nehme an, Sie verwenden ein Raster, in diesem Fall können Sie die Option groupsCollapedByDefault: false verwenden, um alle Elemente standardmäßig zu erweitern.

+1

Ich finde, es gibt keine solche Option in UI-Grid. –

+0

können Sie auf eine Dokumentation verweisen? – Asqan

14

In meinem Fall, nach der gearbeitet: für alle meine Netznutzungs Fällen

$scope.gridOptions = { 
     ... 
     onRegisterApi: function(gridApi) { 
     $scope.gridApi = gridApi; 
     $scope.gridApi.grid.registerDataChangeCallback(function() { 
      $scope.gridApi.treeBase.expandAllRows(); 
     }); 
     } 
    }; 
+0

Es funktioniert für mich! –

0

Keine der oben für mich gearbeitet.

 $scope.gridApi.grid.registerDataChangeCallback(function() { 
      if($scope.gridApi.grid.treeBase.tree instanceof Array){ 
       $scope.gridApi.treeBase.expandAllRows(); 
      } 

     }); 

Folgendes funktioniert in jedem Fall, den ich getestet habe. DataChangeCallback wird zweimal (aus unbekannten Gründen) beim ersten Laden der Seite aufgerufen. Das erste Mal, gridApi.grid.treeBase.tree ist ein Objekt, das das Problem mit gridApi.grid.treeBase.tree.forEach oben Ursachen:

0

Keine dieser Antworten war für mich, das folgende tat:

scope.gridApi.core.on.rowsRendered(null,() => { 
    scope.gridApi.treeBase.expandAllRows(); 
}); 
Verwandte Themen