2013-04-17 14 views
6

Sto usando JQgrid per mostrare informazioni e per eseguire operazioni CRUD. Voglio una pagina che abbia l'aspetto di Twitter Bootstrap e JQGrid che mostra alcuni dati, tuttavia se importo il CSS per JQGrid e il CSS per Bootstrap, la griglia non è affatto visibile. Quello che voglio in pratica è di avere gli stili JQGrid completamente separati dal resto degli stili di pagina.Problema di stile JQgrid con Twitter Bootstrap

È possibile?

Di seguito si riporta il codice della pagina che sto cercando di usare Twitter Bootstrap fianco con jqGrid:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

    <!--Styles for JQGrid--> 
    <link rel="stylesheet" type="text/css" media="screen" href="/css/flick/jquery-ui-1.8.16.custom.css" /> 
    <link rel="stylesheet" type="text/css" media="screen" href="/jqgrid/css/ui.jqgrid.css" /> 

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script> 
    <script src="/jqgrid/js/i18n/grid.locale-es.js" type="text/javascript"></script> 
    <script src="/jqgrid/js/jquery.jqGrid.min.js" type="text/javascript"></script> 


    <!--Twitter Bootstrap Styles --> 

     <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen"> 

     <script src="http://code.jquery.com/jquery.js"></script> 
     <script src="/bootstrap/js/bootstrap.min.js"></script> 

<title>Manejo de alumnos</title> 
</head> 
<body> 
<center> 

    <div class="myjqueryUI"> 
     <table id="list"></table><!--Grid table--> 
     <div id="pager"></div> <!--pagination div--> 
     <a href="http://localhost/ProyectoNetbeans/CodeIgniter_2.1.3/index.php/Alumnos_controller/mostrarInsertar">Insertar alumno</a> 
    </div> 

</center> 

<script type="text/javascript"> 


    $(document).ready(function(){ 
     jQuery("#list").jqGrid({ 
      url: 'http://localhost/ProyectoNetbeans/CodeIgniter_2.1.3/index.php/Alumnos_controller/loadData', 
      mtype : "post",    //Ajax request type. It also could be GET 
      datatype: "json",   //supported formats XML, JSON or Arrray 
      colNames:['Expediente','Primer apellido','Segundo apellido', 'Nombre','Cédula'],  //Grid column headings 
      colModel:[ 
       {name:'expediente',index:'expediente', width:300, editable:true, edittype:'text'}, 
       {name:'primerApellido',index:'primerApellido', width:300, editable:true, edittype:'text'}, 
       {name:'segundoApellido',index:'segundoApellido', width:300, editable:true, edittype:'text'}, 
       {name:'nombre',index:'nombre', width:300, editable:true, edittype:'text'}, 
       {name:'cedula',index:'cedula', width:300, editable:true, edittype:'text'} 

      ], 
      pager: '#pager', 
      rowNum:10, 
      rowList:[15,30], 
      sortname: 'primerApellido', 
    reloadAfterSubmit: true, 
      sortorder: 'asc', 
      viewrecords: true, 
    postData: {expediente:"expediente"}, 
      caption: 'Alumnos' 
     }).navGrid('#pager',{edit:false,add:false,del:false}, 
      { 

      }, 
      { 
       }, 


    }, 

    {multipleSearch : false}, // enable the advanced searching 
    {closeOnEscape:true} 

     ); 
    }); 
</script> 

risposta

6

Si consiglia di inviare sempre non solo la descrizione cosa fai, ma il codice (HTML, JavaScript ecc.) che mostra come si tenta di fare questo.

Se si desidera posizionare jqGrid nella pagina che utilizza principalmente Bootstrap di Twitter, si consiglia di utilizzare l'interfaccia utente speciale di jQuery: jQuery UI Bootstrap.

Se preferite usare qualche altro utente CSS jQuery è possibile scaricare il CSS, che è necessario dal funzionario jQuery UI download page, ma impostare un certo nome di classe all'interno di "Ambito CSS:" il campo:

enter image description here

Se si immette per esempio ".myjqueryUI" nel 'Scope CSS:' il campo, allora avete bisogno posizionare il <table> che si intende utilizzare per jqGrid all'interno di <div> aver 'myjqueryUI' class:

<div class="myjqueryUI"> 
    <table id="grid"></table> 
</div> 
+0

Grazie per la risposta Oleg, mi dispiace per il fatto di non pubblicare il codice, l'ho già incluso nel post originale. Ho scaricato JQuery UI Bootstrap e l'ho incluso nel mio progetto, ma non so dove sia quella pagina "scope CSS" che hai aperto. Cerco di impostare una classe per la tabella JQGrid all'interno di un div, ma non funziona. Ho aperto i file CSS del bootstrap dell'interfaccia utente JQuery, ma non sono sicuro di quale utilizzare per il div che contiene la tabella. Sai cosa deve essere usato con JQuery UI Bootstrap? – Vito

+0

@Vito: è possibile scaricare il tema dell'interfaccia utente jQuery standard (collegare Flick Theme, che si utilizza al momento) o utilizzare Bootstrap dell'interfaccia utente JQuery. Campo "Ambito CSS" che puoi trovare nella [pagina di download] (http://jqueryui.com/download/). Solo i temi * standard * (come Flick Theme) disponibili nella pagina possono essere scaricati nel modo. Un'osservazione al tuo codice: dovresti includere ** solo un ** jQuery JavaScript. Il codice corrente include prima jQuery 1.7.1 e poi [jQuery 1.9.1] (http://code.jquery.com/jquery.js) (prima di 'bootstrap.min.js'). – Oleg

+0

Ho scaricato il tema Flick che ho chiamato flick nell'ambito, poi nel mio codice ho creato un div che ha la tabella JQGrid con la classe "flick". Suppongo che mettendo questa classe sul div si ridurrà il css di quell'area per colpire. Ora viene visualizzato jqgrid, ma il navgrid non viene mostrato e la griglia non ha colori. Sembra che funzioni, perché ora viene visualizzata la griglia e c'è anche Twitter Bootstrap, ma la griglia non ha lo stile applicato correttamente. Hai qualche idea di cosa può essere sbagliato qui? – Vito

4

Controllare questo Bootstrap UI Template contiene il plug-in jqGrid

È possibile utilizzare molte funzioni di questo modello. Sembra impressionante

4

Ulteriori informazioni sul tema della jqGrid + Bootstrap:

Sembra che ci sia un problema di sostituzione border-collapse tavolo con jqGrid (4.6.0) e Bootstrap (3).

jqGrid vuole: border-collapse: separate; (default CSS)

Bootsrap vuole: border-collapse: collapse;

Si stava causando un problema di overflow alla destra della griglia.

#grid_container_id table{ 
    border-collapse: separate; 
} 

risolto il problema.

1

Ecco ciò che funziona per noi:

1- Prendi il css da: https://github.com/Soliman/jqGrid.bootstrap

Questo non cambia le specifiche jqGrid a soli alcuni cambiamenti CSS.

La demo è a http://www.soliman.nl/test/jqgrid.bootstrap/jqGrid.bootstrap.html

2- Se si desidera che tutti i CSS bootstrap si applica al vostro tavolo, è necessario eseguire di seguito dopo i carichi di griglia:

//remove the 'ui-state' and 'ui-widget' from jquery-ui.css which prevents your customize ccs to apply on jquery grid 
//the gbox_gridtable is the most top element in the grid 
function removeJqueryUiClass(){ 
    $('#gbox_gridtable').find('*').andSelf().attr('class', 
      function(i, css){ 
       if (typeof css !== 'undefined') {      
         return css.replace(/\ui-state\S+/g, '').replace(/\ui-widget\S+/g, ''); 
        } 
      }); 

} 

3- Per rendere la jqGrid reattivo, mettere la griglia in un div come <div id="grid">: di cource questo div deve far parte del sistema di rete di bootstrap, poi mettere sotto js nel file

//When the window size changes resize the gird 
$(window).bind('resize', function() { 
    $("#gridtable").jqGrid("setGridWidth",$("#grid").width()); 
}); 

4- È inoltre possibile impostare la dimensione della griglia quando la griglia è stata caricata completamente

+0

Questo CSS è * perfetto *. Diffondere la parola. – asteri

Problemi correlati