2013-08-16 8 views
12

Vorremmo utilizzare la griglia di interfaccia utente angolare, ma non riesco a trovare un'opzione per dire al viewport all'interno della griglia di non impostare l'overflow su automatico e non scorrere.Deviazione Scorrimento all'interno dell'interfaccia utente ng-griglia?

Quello che ci piacerebbe fare è che l'altezza della tabella/griglia sia dinamica in base alla dimensione del numero di righe nella nostra griglia. Abbiamo un numero massimo di righe fisso, quindi c'è poco motivo per avere troppe righe nel DOM.

Qualche suggerimento su dove andare?

risposta

8

recente ho incontrato stessi problemi e trovato una soluzione al https://groups.google.com/forum/#!topic/angular/KiBXP3eKCDY

Volete ng-grid da inizializzare dopo aver ricevuto i dati.

la seguente soluzione richiede l'utilizzo angolare-ui:

<div ui-if="dataForGrid.length>0" ng-grid="gridOptions" ng-style="getTableStyle()" /> 

$scope.getTableStyle= function() { 
    var rowHeight=30; 
    var headerHeight=45; 
    return { 
     height: ($scope.dataForGrid.length * rowHeight + headerHeight) + "px" 
    }; 
}; 
+1

L'ho provato, ho scritto: ng-style = "height: {{formData.watchCountData.length * 30}} px"> ma non funziona :( – Dejell

5

Sì, c'è un plugin che offre tale impianto la sua ng-grid-flexible-height.js

si può vedere la plunker per come la sua utilizzati

+0

Vinod - Grazie, ma il vostro plunker non affronta quello che mi chiedeva. Voglio che la griglia aggiusti la sua altezza in base al numero di righe. In definitiva non voglio nessuna barra di scorrimento nella griglia. Voglio invece usare l'intera barra di scorrimento del documento. – RullDawg

+0

A meno che non abbia frainteso i tuoi requisiti, non vuoi la barra di scorrimento nella griglia ma il plunker non ha nemmeno la barra di scorrimento nella griglia e in base al numero di righe l'altezza viene regolata –

+1

Ho aggiunto più righe a un fork di il tuo plunker [Aggiornamento Plunker] (http://plnkr.co/edit/ghrGd1X9XO8wb6E8YUs7?p=preview). Quello che vedo è un tavolo con un'altezza per circa 10 file ma ce ne sono oltre 50 nella griglia. Vedo una barra di scorrimento all'interno della griglia. – RullDawg

6

nel CSS, si può provare l'override del height del div contenente le righe, quindi le righe non traboccare il contenitore:

È inoltre possibile compilare lo spazio bianco che ng-griglia lascia per la barra di scorrimento con il colore di sfondo della riga (anche se sfortunatamente i dati dell'ultima cella non si espandono per colmare il divario):

.ngCanvas { 
    width: 100% !important; 
} 
.ngRow { 
    width: 100% !important; 
} 

A seconda del layout della tabella, potrebbe essere necessario modificare anche altri stili, ma questi sono i principali. Inoltre, fare attenzione a non impostare un'altezza per l'intero ngGrid.

+0

Questo approccio funziona sicuramente ... ma non sembra corretto perché le righe non si estendono a tutta larghezza nella colonna della barra di scorrimento non più visibile. – CalvinDale

+0

Sì, non l'avevo notato prima. Speravo che il CSS sarebbe stato più facile da implementare ma sfortunatamente non sembra così. :(Ho aggiornato la mia risposta ma c'è ancora spazio morto alla fine dove sarebbe stata la barra di scorrimento - Non ho capito come rendere l'ultima cella adatta alla larghezza rimanente –

+0

Questi sembrano funzionare per me.Rimosso lo spazio vuoto in cui si trovava la barra di scorrimento, c'è solo un po 'di funk con il bordo della cella sulla colonna finale, ma posso conviverci - era meglio di prima. –

10

L'aggiunta di questo alla tua CSS risolverà il vostro problema:

.ngViewport{ 
    height:auto !important; 
} 
.ngCanvas, .ngViewport, .ngRow, .ngFooterPanel, .ngTopPanel { 
    width: 100% !important; 
} 
.ngRow { 
    border-bottom:none !important; 
} 
+0

lascerei '.ngViewport' dal secondo elenco e sostituirò' .ngTopPanel' di '.ngHeaderContainer'. 'ngViewport' dovrebbe avere le sue dimensioni da' ngCanvas' proprio come 'ngTopPanel' dovrebbe funzionare con' ngHeaderContainer'. – jwg