J'ai un problème avec Richfaces étendus de DataTable
si les colonnes sont plus disées 20, au lieu de donner une barre de défilement horizontale, les colonnes sont comprimées. P>
J'ai essayé de donner une largeur de colonne en%, PX .Mais sans usage. P>
Quelqu'un est familier avec cela? p>
5 Réponses :
Vous devez spécifier la largeur sans "px" ou "%", par exemple
<rich:column label="Select" sortable="false" width="100">
J'ai donné
Vous devez regarder le HTML qui est produit. Publiez une version supprimée de celle-ci (c'est-à-dire sans tout le JavaScript) comme édition de votre question initiale.
Oh et vous stockez votre état de table n'importe où? Une des belles caractéristiques d'extensiondatables est qu'il peut persister les largeurs de colonne, etc.
+1 @Abishek Si vous ne spécifiez pas les unités, les valeurs de largeur seront ignorées. Ajouter PX B> pour les largeurs.
Vous pouvez mettre Pour référence, il s'agit de la structure de sortie de base de Vous pouvez ajouter défilement horizontal à J'ai essayé ... p> ... Mais cela ne semble avoir aucun effet. P> Je pense que cela peut être dû au fait que je fais la plupart de ces changements de Firebug et Je vais essayer de faire ces changements dans mon Fichier CSS pour voir si tout fonctionne comme magiquement fonctionne. Le JavaScript pour alors, dans le pied de page du
div.extdt-innerdiv code>) est absolument positionné, le retirer de la Flux du document. P>
div.extdt-innerdiv code>, mais
Code> Colonne de la colonne de la colonne (
extenduedatatable.dataTable_formid_edtid.calculatthsfromratios () code>) est essentiellement confus par cela, redimensionnant toutes les colonnes qui commencent après le composant
maxwidth code > (dérivé de la largeur initiale de
div.extdt-maindiv code>) à 20px large large. p>
position: relatif; code> li>
largeur: 100%; code> li>
Overflow-X: auto; code> li>
div.extdt-maindiviv code> absolument positionné li>
div.extdt-outerdiv code> et
div.extdt-innerdiv code> positionnement statique et largeur automatique li>
ul>
maindiv.getwidth () code> (de
Calculatwidthsfromratios () code>) récupère une valeur mise en cache,
maindiv.Element.boxwidth code>. Cette valeur est définie dans
clientui.common.box.box.sewidth () code> (common-défilable-data-table-table.js), et il est appelé une seule fois; Il n'est plus appelé si je redimense la fenêtre du navigateur (le
div.extdt-innerdiv code>: p>
Calculatthsfromratios () code> Fonction: p>
<rich:extendedDataTable id="edtId">
<!-- rest of extended data table -->
<f:facet name="footer">
<script type="text/javascript">
jQuery(function() {
// Disable ratio-based column resizing.
ExtendedDataTable.DataTable_formId_edtId.calculateWidthsFromRatios = function() {};
});
</script>
</f:facet>
</rich:extendedDataTable>
Pour activer la barre de défilement horizontal Voir le contournement ici https://jira.jboss.org/ Jira / Browse / RF-4871 . P>
Pour que les colonnes redimensionnables lorsque vous affichez la barre de défilement horizontal, voir cette http: //community.jboss. org / message / 518878 # 518878 . P>
J'ai combiné toutes sortes d'idées et j'ai proposé ce qui suit:
Il y a - comme mentionné - aux choses à réparer. L'une est la défrolabilité au-delà de 100% de la largeur de table et le second est la barre de défilement elle-même. Donc, je vais avoir un fichier JS pour corriger le problème de redimensionnement et certains CSS pour ajouter la barre de défilement ... p>
page.xhtml em> - votre page avec une partie étendue-dt À l'intérieur. P> ExtendedDataTable.DataTable.header.prototype.OnSepMouseMove = function(event) {
if(this.dragColumnInfo && this.dragColumnInfo.mouseDown) {
if(!this.dragColumnInfo.dragStarted) {
this.dragColumnInfo.dragStarted = true;
this._showSplitter(this.dragColumnInfo.srcElement.columnIndex);
}
var delta = Event.pointerX(event) -
this.dragColumnInfo.startX
if (delta < this.minDelta) {
delta = this.minDelta;
}
/*if (delta > this.maxDelta) {
delta = this.maxDelta;
}*/
var x = this.dragColumnInfo.originalX + delta;
var finalX = x - this.minColumnWidth - 6 //6 stands for sep span width;
this.columnSplitter.moveToX(finalX);
Event.stop(event);
}
}
ExtendedDataTable.DataTable.header.prototype.OnSepMouseUp = function(event) {
Event.stop(event);
Event.stopObserving(document, 'mousemove', this.eventSepMouseMove);
Event.stopObserving(document, 'mouseup', this.eventSepMouseUp);
if(this.dragColumnInfo && this.dragColumnInfo.dragStarted) {
this.dragColumnInfo.dragStarted = false;
this.dragColumnInfo.mouseDown = false;
var delta = Event.pointerX(event) -
this.dragColumnInfo.startX;
if (delta < this.minDelta) {
delta = this.minDelta;
}
/*if (delta > this.maxDelta) {
delta = this.maxDelta;
}*/
var columnIndex = this.dragColumnInfo.srcElement.columnIndex;
var newWidth = this.getColumnWidth(columnIndex) + delta;
this.extDt.setColumnWidth(columnIndex, newWidth);
this.setColumnWidth(columnIndex,newWidth);
this.extDt.updateLayout();
if (this.extDt.onColumnResize){
//set properly value to this.columnWidths
this.extDt.columnWidths = "";
for (i=0; i<this.columnsNumber; i++){
this.extDt.columnWidths += "" + this.getColumnWidth(i) + ";";
}//for
this.extDt.onColumnResize(event, this.extDt.columnWidths);
}
}
this._hideSplitter();
}
ExtendedDataTable.DataTable.prototype.calculateWidthsFromRatios = function() {
LOG.debug('firing calculateWidthsFromRatios');
var c = this.getColumns();
var scrollbarWidth = this.getScrollbarWidth();
this._scrollbarWidth = scrollbarWidth;
LOG.debug('Scrollbar: ' + scrollbarWidth);
var mainDivWidth = this.mainDiv.getWidth();
LOG.debug('Main DIV: ' + mainDivWidth);
var maxWidth = mainDivWidth - scrollbarWidth;
LOG.debug('Width to spread: ' + maxWidth);
var totalWidth = 0;
for (i = 0; i < c.length - 1; i++) {
LOG.debug('Column[' + i + '] ratio: ' + this.ratios[i]);
var w = Math.round(this.ratios[i] * maxWidth);
if (w < parseInt(this.minColumnWidth)) {
w = parseInt(this.minColumnWidth);
}
LOG.debug('setting column ' + i + ' to width: ' + w);
this.setColumnWidth(i, w);
this.header.setColumnWidth(i, w);
totalWidth += w;
}
/*
* if (totalWidth > maxWidth) {
* c[c.length - 2].width -= (totalWidth - maxWidth);
* }
*/
};
Selon cet exemple ici:
La largeur est utilisée de cette façon (cochez la source du XHTML): p> pour moi, il fonctionnait sans problème. P> Salutations. P> P>
FYI: Comment publier le code: Stackoverflow.com/editing-help