当前位置:  开发笔记 > 编程语言 > 正文

Rich Extended DataTable列宽

如何解决《RichExtendedDataTable列宽》经验,为你挑选了2个好方法。

我有RichFaces扩展dataTable的问题

如果列更多地说20,而不是给出水平滚动条,则列将被压缩.

我尝试用%,px给出列宽.但是没用.

有人熟悉这个吗?


   
    
  
  

Christopher .. 12

真的不能很好地处理水平滚动.实际上,似乎开发人员开始着手进行水平滚动.

您可以

启用水平滚动的情况下放入,但如果您将其保留,则无法正常工作.其中一个嵌套
(div.extdt-innerdiv)绝对定位,将其从文档流中移除.

作为参考,这是基本的输出结构,假设有三个宽度为100px的元素和两个记录:

Column Header 1 Column Header 2 Column Header 3
Column 1, Row 1
Column 2, Row 1
Column 3, Row 1
Column 1, Row 2
Column 2, Row 2
Column 3, Row 2

您可以添加水平滚动div.extdt-innerdiv,但是列的自动调整大小功能(ExtendedDataTable.DataTable_formId_edtId.calculateWidthsFromRatios())基本上会被此混淆,调整从组件开始maxWidth(从初始宽度派生div.extdt-maindiv)到20px宽的所有列.

我试过了...

使用

元素包装并设置以下内容:

position: relative;

width: 100%;

overflow-x: auto;

所需的高度,否则你只会看到下一个项目符号点的滚动条.

制作div.extdt-maindiv绝对定位

给予这两个div.extdt-outerdivdiv.extdt-innerdiv静态定位和经销商的宽度

......但这似乎没有任何影响.

我想这可能是因为我在Firebug中进行了大部分这些更改,并且mainDiv.getWidth()(from calculateWidthsFromRatios())正在检索缓存值,mainDiv.element.boxWidth.该值在ClientUI.common.box.Box.setWidth()(common-scrollable-data-table.js)中设置,并且只调用一次; 如果我调整浏览器窗口大小(在我的情况下有100%的宽度),它不会被再次调用.

我将尝试在我的CSS文件中进行这些更改,看看是否所有内容都神奇地起作用.但是,JavaScript 非常复杂,而且没有记录,因此我可能会遗漏某些地方.我会跟进我的结果.


编辑:在我的CSS中进行更改后,我仍然遇到了缩短列的问题.

因此,为了避免必须创建包装器div,我添加了水平滚动到div.extdt-innerdiv:

.extdt-innerdiv { overflow-y: hidden; overflow-x: auto !important; }

然后,在页脚中,我禁用了该calculateWidthsFromRatios()功能:


    
    
        
    

我使用表的页脚来强制每次重新生成组件时执行此JavaScript.

即使使用此解决方案,用户也无法手动扩展列的宽度,因为extended-data-table.js中的JavaScript会阻止列的调整大小mainDiv.element.boxWidth.为了能够像这样调整大小,人们可能只需要向JBoss提交补丁来修复,因为目前没有计划在RichFaces 3.X中修改它的行为(根据JBoss社区JIRA中的#RF-4871).

祝好运.



1> Christopher ..:

真的不能很好地处理水平滚动.实际上,似乎开发人员开始着手进行水平滚动.

您可以

启用水平滚动的情况下放入,但如果您将其保留,则无法正常工作.其中一个嵌套
(div.extdt-innerdiv)绝对定位,将其从文档流中移除.

作为参考,这是基本的输出结构,假设有三个宽度为100px的元素和两个记录:

Column Header 1 Column Header 2 Column Header 3
Column 1, Row 1
Column 2, Row 1
Column 3, Row 1
Column 1, Row 2
Column 2, Row 2
Column 3, Row 2

您可以添加水平滚动div.extdt-innerdiv,但是列的自动调整大小功能(ExtendedDataTable.DataTable_formId_edtId.calculateWidthsFromRatios())基本上会被此混淆,调整从组件开始maxWidth(从初始宽度派生div.extdt-maindiv)到20px宽的所有列.

我试过了...

使用

元素包装并设置以下内容:

position: relative;

width: 100%;

overflow-x: auto;

所需的高度,否则你只会看到下一个项目符号点的滚动条.

制作div.extdt-maindiv绝对定位

给予这两个div.extdt-outerdivdiv.extdt-innerdiv静态定位和经销商的宽度

......但这似乎没有任何影响.

我想这可能是因为我在Firebug中进行了大部分这些更改,并且mainDiv.getWidth()(from calculateWidthsFromRatios())正在检索缓存值,mainDiv.element.boxWidth.该值在ClientUI.common.box.Box.setWidth()(common-scrollable-data-table.js)中设置,并且只调用一次; 如果我调整浏览器窗口大小(在我的情况下有100%的宽度),它不会被再次调用.

我将尝试在我的CSS文件中进行这些更改,看看是否所有内容都神奇地起作用.但是,JavaScript 非常复杂,而且没有记录,因此我可能会遗漏某些地方.我会跟进我的结果.


编辑:在我的CSS中进行更改后,我仍然遇到了缩短列的问题.

因此,为了避免必须创建包装器div,我添加了水平滚动到div.extdt-innerdiv:

.extdt-innerdiv { overflow-y: hidden; overflow-x: auto !important; }

然后,在页脚中,我禁用了该calculateWidthsFromRatios()功能:


    
    
        
    

我使用表的页脚来强制每次重新生成组件时执行此JavaScript.

即使使用此解决方案,用户也无法手动扩展列的宽度,因为extended-data-table.js中的JavaScript会阻止列的调整大小mainDiv.element.boxWidth.为了能够像这样调整大小,人们可能只需要向JBoss提交补丁来修复,因为目前没有计划在RichFaces 3.X中修改它的行为(根据JBoss社区JIRA中的#RF-4871).

祝好运.



2> Damo..:

您应该指定宽度而不是"px"或"%",例如


扩展数据表存在水平滚动问题,但您可以指定固定的表格宽度(以像素为单位),并将表格放在div中,其中overflow-x设置为滚动.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有