Barre de défilement horizontale dans jqgrid cas de besoin
J'ai un jqgrid où il y a 19 colonnes, je veux afficher en plein en-têtes de colonne et avoir une barre de défilement horizontale (uniquement lorsque le l'en-tête des colonnes de dépasser le mainWidth
)
C'est de cette façon je reçois mes grilles, mais comme vous pouvez le voir dans Version de Base de données panneau tous les 5 en-tête de colonnes sont visibles je veux chose de similaire dans Base de données de presse panneau, mais dans ce cas, car il permettra d'augmenter la largeur du récipient, une barre de défilement horizontale doit apparaître l'affichage de toutes les colonnes
Ci-dessous mon code pour le jqgrid
var mainWidth=jQuery('#detailTable').width();
panels+='<div title="Database Release" class="class">'+
'<div class="jqUIDiv" style="width:'+mainWidth+'px; overflow-x:auto;">'+
'<table id="tblOrsDatabaseRelease" width="100%"></table>'+
'<div id="OrsDatabaseReleaseGridpager"></div>'+
'</div>'+
'</div>';
$('#detailTable').empty();
$('<div>')
.html('<div class="titleBlue">ORS Information</div>'+panels)
.appendTo('#detailTable').delay(10).queue(function(){
$('.class').jPanel({
'effect' : 'fade',
'speed' : 'slow',
'easing' : 'swing'
});
});
Je suis en utilisant Composite (pliable panneaux) ci-dessus
//Master Database Release
jQuery("#tblOrsDatabaseRelease").jqGrid({
datatype: "clientSide",
colNames:['Debug Ind','Debug File Path','Debug Level','Debug File Name','LOG_FILE_SIZE','LOG_FILE_NUMBER','TNS_NAME','CONNECTION_PORT','ORACLE_SID','DATABASE_HOST','SCHEMA_WRITE_LOCK_DISABLED_IND','COLUMN_LENGTH_IN_BYTES_IND','MTIP_REGENERATION_REQUIRED_IND','GLOBAL_NOLOGGING_IND','PRODUCTION_MODE_IND','LAST_CHANGE_DATE','API_BATCH_INTEROP_IND','ZDT_IND','WORKFLOW_ENGINE_NAME'],
colModel:[
{name:'debugInd',index:'debugInd', align:"left"},
{name:'debugFilePath',index:'debugFilePath', align:"left"},
{name:'debugLevel',index:'debugLevel', align:"left"},
{name:'debugFileName',index:'debugFileName', align:"left"},
{name:'LOG_FILE_SIZE',index:'LOG_FILE_SIZE', align:"left"},
{name:'LOG_FILE_NUMBER',index:'LOG_FILE_NUMBER', align:"left"},
{name:'TNS_NAME',index:'TNS_NAME', align:"left"},
{name:'CONNECTION_PORT',index:'CONNECTION_PORT', align:"left"},
{name:'ORACLE_SID',index:'ORACLE_SID', align:"left"},
{name:'DATABASE_HOST',index:'DATABASE_HOST', align:"left"},
{name:'SCHEMA_WRITE_LOCK_DISABLED_IND',index:'SCHEMA_WRITE_LOCK_DISABLED_IND', align:"left"},
{name:'COLUMN_LENGTH_IN_BYTES_IND',index:'COLUMN_LENGTH_IN_BYTES_IND', align:"left"},
{name:'MTIP_REGENERATION_REQUIRED_IND',index:'MTIP_REGENERATION_REQUIRED_IND', align:"left"},
{name:'GLOBAL_NOLOGGING_IND',index:'GLOBAL_NOLOGGING_IND', align:"left"},
{name:'PRODUCTION_MODE_IND',index:'PRODUCTION_MODE_IND', align:"left"},
{name:'LAST_CHANGE_DATE',index:'LAST_CHANGE_DATE', align:"left"},
{name:'API_BATCH_INTEROP_IND',index:'API_BATCH_INTEROP_IND', align:"left"},
{name:'ZDT_IND',index:'ZDT_IND', align:"left"},
{name:'WORKFLOW_ENGINE_NAME',index:'WORKFLOW_ENGINE_NAME', align:"left"}
],
pagination:true,
pager : '#OrsDatabaseReleaseGridpager',
rowNum:10,
rowList:[10,50,100],
scrollOffset:0,
height: 'auto',
autowidth:true,
viewrecords: true,
gridview: true,
edit:false,
add:false,
del:false,
loadComplete: function() {
var gr = jQuery('#tblOrsDatabaseRelease');
fixGridWidth(gr);
}
});
for(var i=0;i<orsDbRelease.length;i++)
jQuery("#tblOrsDatabaseRelease").jqGrid('addRowData',i+1,orsDbRelease[i]);
jQuery("#tblOrsDatabaseRelease").setGridParam({rowNum:10}).trigger("reloadGrid
J'ai utilisé Oleg réponse pour obtenir le dessous de la fonction
var fixGridWidth = function (grid) {
var gviewScrollWidth = grid[0].parentNode.parentNode.parentNode.scrollWidth;
var mainWidth = jQuery('#detailTable').width();
var gridScrollWidth = grid[0].scrollWidth;
var htable = jQuery('table.ui-jqgrid-htable', grid[0].parentNode.parentNode.parentNode);
var scrollWidth = gridScrollWidth;
if (htable.length > 0) {
var hdivScrollWidth = htable[0].scrollWidth;
if ((gridScrollWidth < hdivScrollWidth))
scrollWidth = hdivScrollWidth; //max (gridScrollWidth, hdivScrollWidth)
}
if (gviewScrollWidth != scrollWidth || scrollWidth > mainWidth) {
var newGridWidth = (scrollWidth <= mainWidth)? scrollWidth: mainWidth; //min (scrollWidth, mainWidth)
//if the grid has no data, gridScrollWidth can be less then hdiv[0].scrollWidth
if (newGridWidth != gviewScrollWidth)
grid.jqGrid("setGridWidth", newGridWidth);
}
};
Vous devez vous connecter pour publier un commentaire.
Je suppose que le problème qui vous ont existe à cause de l'incompréhension des différents paramètres de jqGrid qui définit la largeur de la colonne. Pour dire la confiance il existe de nombreux scénarios de la largeur de choix et vous n'êtes pas la seule personne qui n'est pas complète comprendre les possibilités de choix de la largeur de la grille et de colonnes dans jqGrid.
Vous avez écrit
Pour mettre en œuvre les exigences, vous devez effectuer les opérations suivantes
autowidth: true
option de jqGrid.shrinkToFit: false
option de jqGrid.width
des biens dans chaque colonne decolModel
. Si vous ne spécifiez aucunwidth
valeur pour la colonne la valeur par défautwidth: 150
Vous devez choisir la largeur dont vous avez vraiment besoin de voir. La valeur de la largeur sera pas changé par jqGrid parce que vous utilisezshrinkToFit: false
.width
option de jqGrid. Dans le cas où la largeur de la grille sera la somme de la largeur de toutes les colonnes de la grille.fixGridWidth
deloadComplete
. Je suppose que vous n'aurez pas besoin de la fonction du tout.Je ne pas utiliser un Composite plugin et ne vois pas l'avantage du plugin comparant à jQuery UI Accordion widget. Il y a probablement certains problèmes spécifiques pour un Composite plugin. Néanmoins, je suppose que vous devez supprimer
width="100%"
attribut de la<table>
élément qui vous permettra de l'utiliser comme grille.Je ne peux pas tester mes suggestions dans votre environnement, mais j'espère qu'elle est très proche de ce que vous avez besoin.
Quelques remarques communes de votre code:
pagination
,edit
,add
oudel
dans jqGrid. Vous devez supprimer les paramètres.data: orsDbRelease
paramètre jqGrid et de supprimer l'utilisation deaddRowData
dans la boucle etreloadGrid
après la boucle. Si vous utilisezdata
paramètre de la grille sera remplie plus rapidement et auront déjà la pagination est correcte.align
dans les éléments de lacolModel
est déjà "gauche" (voir la valeur dans la colonne "Défaut" dans le tableau de la page de la documentation). De sorte que vous pouvez supprimer la propriétéalign:"left"
de chaque colonne.sorttype
de propriété pour tous les non-texte de la colonne dans la grille. Il fera de l'ordre de tri de la colonne correspondante correctement. Probablement l'utilisation de différentsformatter
propriétés peuvent en outre améliorer la visibilité de la grille. Voir la documentation pour plus de détails.Je voudrais deuxième la réponse ci-dessus par Oleg, mais un composite ne cause pas de problèmes ici et je l'ai testé et l'avantage d'un composite au cours de l'accordéon, c'est que vous pouvez avoir plusieurs panneaux s'ouvrent à la fois et il utilise un minimum de marquer et la dernière version a de nombreuses autres fonctionnalités que vous pouvez voir et revoir ici https://sites.google.com/site/jqpanel/home ne laissez-moi savoir vos précieux commentaires.
Comme pour votre code plz supprimer le délai et la file d'attente de la fonction, il peut être à l'origine d'un problème l'utiliser comme ci-dessous au lieu