2017-11-22 4 views
1

PrimeNG DataTable bietet eine [scrollable] Eigenschaft, um vertikales und/oder horizontales Scrollen zu definieren. Dies muss mit einer Kombination aus einem Set scrollHeight und/oder scrollWidth verwendet werden.Primeng macht rollbare Datatable-Höhe responsive

Wie kann ich eine Tabelle erstellen, die sich an die Höhe/Breite des Fensters anpasst, während die scrollbare Funktion beibehalten wird? Hier

ist der Code, den ich versucht habe:

<div class="ui-g-12"> 
 

 
    <p-dataTable class="ui-g-12" [value]="rows" [hidden]="this.apiService.spinnerIsVisible" 
 
    [style]="{ height: 'fit-content', 'margin-top': '10px' }" 
 
    [resizableColumns]="false" columnResizeMode="fit" emptyMessage="No records found" 
 
    [responsive]="false" 
 
    [globalFilter]="tableSearch" 
 
    [editable]="true" 
 
    [scrollable]="true" scrollHeight="100%" scrollWidth="100%"> 
 

 
     <p-header> 
 
     <button pButton type="button" icon="fa-refresh" (click)="refresh()" style="float:left"></button> 
 
     <label for="tableSearch">Global search: </label> 
 
     <input id="tableSearch" #tableSearch type="text" placeholder="type here"> 
 
     </p-header> 
 

 
     <p-column 
 
     *ngFor="let col of cols" [header]="col" [field]="col" 
 
     [style]="{'width': '250px', 'min-width': '50px', 'word-wrap': 'break-word'}" 
 
     [sortable]="true" 
 
     [filter]="true" filterPlaceholder="" filterMatchMode="contains" 
 
     [editable]="true"> 
 
     </p-column> 
 

 
    </p-dataTable> 
 
</div>

Aber es löst nur das ansprechende Breite Problem. Auf dem Screenshot kann man se die Tabelle, die sich horizontal scrollbaren ist: here is the screenshot

Da das height Attribut des p-dataTable Mutter bei Prozentwert relativ ist, habe ich versucht, die Eltern div passen Inhalt zu machen, indem das Hinzufügen style="height: 100%" zu dem Elternteil div. Hier ist der aktualisierte Code:

<div class="ui-g-12" style="height: 100%"> 
 

 
    <p-dataTable class="ui-g-12" [value]="rows" [hidden]="this.apiService.spinnerIsVisible" 
 
    [style]="{ height: 'fit-content', 'margin-top': '10px' }" 
 
    [resizableColumns]="false" columnResizeMode="fit" emptyMessage="No records found" 
 
    [responsive]="false" 
 
    [globalFilter]="tableSearch" 
 
    [editable]="true" 
 
    [scrollable]="true" scrollHeight="100%" scrollWidth="100%"> 
 

 
     <p-header> 
 
     <button pButton type="button" icon="fa-refresh" (click)="refresh()" style="float:left"></button> 
 
     <label for="tableSearch">Global search: </label> 
 
     <input id="tableSearch" #tableSearch type="text" placeholder="type here"> 
 
     </p-header> 
 

 
     <p-column 
 
     *ngFor="let col of cols" [header]="col" [field]="col" 
 
     [style]="{'width': '250px', 'min-width': '50px', 'word-wrap': 'break-word'}" 
 
     [sortable]="true" 
 
     [filter]="true" filterPlaceholder="" filterMatchMode="contains" 
 
     [editable]="true"> 
 
     </p-column> 
 

 
    </p-dataTable> 
 
</div>

Ich bewarb mich auch Änderungen an meiner styles.scss Datei folgendes es (fanden diese in einer anderen Frage auf Stackoverflow) funktioniert:

html, body { 
 
    height: 100%; 
 
}

Aber es hat auch nicht für mich funktioniert: enter image description here Auf dem Screenshot scheint die Höhe richtig zu sein, ist es aber nicht. Wenn ich nach unten scrolle, geht es zunächst so, wie es sollte, aber dann, wenn es nahe am Ende der Tabelle ist, kommt die Bildlaufleiste aus der Ansicht heraus, so dass ich sie nicht sehen kann, während ich noch scrollen kann. So scheint die Datentabelle etwas höher zu sein, als sie sein sollte.

Also, wie löse ich das? Jede Hilfe wäre willkommen!

+0

Man gelöst haben Sie dieses Problem?Das gleiche hier versuchen. – fabioresner

Antwort

1

Ich weiß nicht, ob dies genau Ihren Fall paßt, aber ich mein Problem gelöst, indem die Scrollheight Datatable-Eigenschaft auf:

scrollHeight="50vh" 

vh bezieht sich auf:

vh Relative bis 1% der Höhe des Ansichtsfensters

Ansichtsfenster = Die Größe des Browserfensters. Wenn das Ansichtsfenster 50 cm breit ist, ist 1vw = 0,5 cm.

Sie können verschiedene Werte der vh testen und sehen, was besser passt.

mehr auf: https://www.w3schools.com/cssref/css_units.asp

Verwandte Themen