jqGrid – c’È un modo per visualizzare sempre una barra di scorrimento verticale?

La mia domanda è più jqGrids che possono o non possono contenere una quantità sufficiente di righe per richiedere una barra di scorrimento verticale. Ma le righe possono essere aggiunti dinamicamente a queste griglie, dopo che sono state create, in modo che una griglia può eventualmente richiedere una barra di scorrimento.

Il problema è che se la griglia non hanno abbastanza righe per richiedere una barra di scorrimento, c’è uno spazio vuoto sul lato destro della griglia. Vorrei risolvere questo in qualche modo – sia di visualizzare sempre la barra di scorrimento verticale, o in qualche modo aggiungere dinamicamente quando necessario.

Ho provato ad aggiungere il seguente CSS per la griglia .ui-jqgrid-bdiv div:

overflow-y: scroll;

Utilizzando il seguente jQuery (il codice è brutto, lo so):

$("#mygrid").closest(".ui-jqgrid-bdiv").attr("style",
$("#mygrid").closest(".ui-jqgrid-bdiv").attr("style") + " overflow-y: scroll; ");

Questo funziona bene su Firefox e Chrome, ma su IE la griglia non viene mai visualizzata la barra di scorrimento (non importa quante righe aggiungo, sono aggiunte in fondo alla griglia e una barra di scorrimento verticale non compare mai).

Qualsiasi aiuto è gradito!

 

4 Replies
  1. 14

    overflow-y è CSS3, e non è ancora pienamente supportato da IE (sigh…)

    Così, credo che il solo CSS 2 cose che si possono fare su questo, senza altre marcature coinvolti, è quello di utilizzare overflow: auto (che lasciare che il browser decidere) o overflow: scroll, che la forza sia verticale E le barre di scorrimento orizzontali.

    Una soluzione potrebbe essere quella di avvolgere l’intera griglia in un grande div con un min-height, così si imposta pari alla finestra del browser + 1px. In questo modo avrete la forza di una barra di scorrimento verticale.

    Impostazione di un min-height può essere difficile da fare in tutti i browser, ma ho trovato questa grande opera in più di loro.

    .the-wrapper{
      height: auto !important; /* for real browsers*/
      height: 601px;           /* IE6 will use this a min-height. Use any height you need - you can even set this using JavaScript depending on the browser window height */
      min-height: 601px;       /* for real browsers - same value as height */
    }

    Naturalmente, questo aggiungerà un po ‘ di spazio sotto le griglie. Benvenuto a bordo!

    • Questo è esattamente quello che stavo andando a raccomandare. Mi piacerebbe +1 se avevo voti a sinistra.
    • Ciao Bob, grazie comunque 🙂 Ma non mi dispiacerebbe se sei tornato a domani 😛
  2. 1

    Hai impostato la proprietà height sulla griglia di partenza? Vale a dire può ottenere scontroso con le barre di scorrimento se non l’altezza è impostata.

  3. 1

    C’è un scrollOffset opzione per il jqGrid.

    Set a zero e il vuoto che va via.

    • A destra, il problema è che la barra di scorrimento è necessario se ci sono più righe di quelle che possono essere visualizzati, ma la griglia non può sapere questo fino a dopo il recupero dei dati. Ma una volta che la griglia è costruita la scrollOffset opzione non può essere modificata, in base a: trirand.com/jqgridwiki/doku.php?id=wiki:options
    • Questo non funziona più. Non downvoting, solo la condivisione.

Lascia un commento