UI-Grid nicht 100% der Breite auf die Seite laden
Bin ich mit dem ui-grid zum anzeigen von Daten in der Tabelle. wenn ich das laden der Seite und lassen Sie für einige Sekunden und klicken Sie dann auf die Registerkarte (die mit ui-grid), die ui-grid-css Pause. es zeigt nicht die Breite des ui-grid-100% der container.aber wenn ich das laden der Seite und klicken Sie einfach auf die Registerkarte (mit ui-grid). ui-grid zeigt perfekt, ich meine die Breite, die 100% der container. Ich weiß nicht, was das problem ist.dies ist der code, an dem ich arbeite :
Js:
$scope.gridOptions= {
enableFiltering: true,
enableGridMenu : true,
enableRowSelection: true,
enableSelectAll: true,
selectionRowHeaderWidth: 50,
//rowHeight: 35,
//infiniteScrollRowsFromEnd: 50,
//infiniteScrollUp: true,
infiniteScrollDown: true,
columnDefs : [
{ displayName:"Attribute",field: 'attributeId',filter: {placeholder: 'Search Attribute'},width:'10%'},
{ displayName:"Section",field: 'sectionRef.attributeSectionId' ,filter: {placeholder: 'Search Section'}},
{ displayName:"Type",field: 'types',filter: { placeholder: 'Search Types'} }
]
}
Html:
<div class="grid m-b-20" ui-grid="gridOptions" ui-grid-move-columns ui-grid-edit ui-grid-resize-columns ui-grid-pinning ui-grid-selection ui-grid-grouping ui-grid-infinite-scroll>
</div>
Hinweis: ui-grid ist im inneren Angular bootstrap-Registerkarte
und hier ist der snapshot der Zusammenbruch grid :
- Was passiert, wenn Sie die Größe des browser-Fensters? Mag eine dumme Frage sein, aber ich hatte dieses Problem einmal. Vielleicht schauen Sie hier für ein workaround: stackoverflow.com/questions/24157824/...
- wenn ich die Größe browser-Fenster, das es funktioniert !!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie eine animation, die beim laden der Seite - vielleicht eine Registerkarte oder ein modales? Wenn ja, dann die übliche Abhilfe ist, die wir verwenden in der modal-tutorial: http://ui-grid.info/docs/#/tutorial/110_grid_in_modal
Das problem ist, dass das raster nicht reagieren, es wird die Größe auf "Rendern". Wenn Sie haben nicht eine Feste Größe, die es bekommt, es aus der container-Größe. Wenn Sie Ihren container animiert an der Zeit, die Größe kann nicht die Reale Größe.
Dieser hat den job für mich.
verwenden $Umfang.gridApi.core.handleWindowResize(); diese Methode in Intervall-Zeit, um dieses problem zu lösen
Die Abhilfe für dieses ist das hinzufügen der Breite und rowHeight
für Zeile und Zelle. Wie ich bereits erwähnt habe ist dies ein workaround und ich bin sicher, es muss andere Wege dies zu tun, aber das ist eine schnelle Lösung, und sollten Sie bekommen, was Sie zumindest 🙂
Ist mit den vorgeschlagenen polling-Ansatz, die Funktion wird aufgerufen, nachdem eine festgelegte Wartezeit, so dass jeder Breite Veränderung plötzlich Auftritt. Dies führt zu erheblichen Ruckeln, wenn der Benutzer schnell ändert sich die Größe der Tabelle.
Ein viel besserer Ansatz ist zum binden ein resize-handler aufrufen, eine resize-Funktion, wenn der viewport-änderungen
Mein Projekt verwendet eine sidebar, also ich Konto für die Breite der Seitenleiste oder Polsterung Breite (wenn die sidebar geöffnet ist oder nicht), dann setzen Sie einfach einer variable gebunden an ein ng-style auf meinem Tisch wrapper
Dies ist was für mich gearbeitet wie ein Charme!
Hinzufügen sagen
ng-style="windowResize"
dem ui-grid-markup in HTML-template, und auf$scope.windowResize
fügen Siewidth: 100%
innerhalbonRegisterApi
Funktion innerhalb des Gültigkeitsbereichs.So, im Grunde
onRegisterApi()
ist die Standard-Funktion von ui-grid, löst beim raster ist wirklich gezeichnet, und so im Grunde sind wir bedingt hinzufügen Breite 100% auf raster und machen Sie sensibel für alle Ansichtsfenster.Entfernen
ui-grid-resize-columns
von Ihren HTML -div
tags.