自动调整DataGridCoulmn/AdvancedDataGridColumn的宽度以适合内容

Rav*_*ish 6 apache-flex datagridcolumn

我希望DataGridColumn或AdvancedDataGridColumn会自动调整其宽度,以便适合其中的内容.

我刚开始弯曲.我想实现HTML表格之类的东西.

渲染的数据是简单的文本.有些行文本较少,在这种情况下我想自动扩展DataGridColumn的宽度.

任何帮助解决这个问题.

提前致谢

Rob*_*sto 5

您已经遇到了DataGrid和AdvancedDataGrid的一个最大问题.我绝对不喜欢让细胞内容舒适地出现是多么困难.由于不明显的原因,窄字段值将出现在非常宽的单元格中,而广泛的内容和标题将被破坏.

出于某种原因,对于第一列和最后一列尤其如此.

我找到的唯一解决方案是在列上设置minWidth属性,我必须首先查看数据以找到这些列中最宽的异常值,并确保它们适合.另一个有帮助的解决方案是在左侧和右侧设置虚拟列,给出宽度和最小宽度以及一些非常小的尺寸的最大宽度,比如5,这似乎允许中间的真实柱子"呼吸"更好一些.

<mx:columns>
  <mx:DataGridColumn id="leftDummy" width="5" minWidth="5" maxWidth="5"/>
  <!-- Your "real" columns here, with minWidth assignments -->
  <mx:DataGridColumn id="rightDummy" width="5" minWidth="5" maxWidth="5"/>
</mxcolumns>
Run Code Online (Sandbox Code Playgroud)

但要小心.如果在列上设置宽度,则不会将其解释为字面值或实际百分比,而是作为某种半成比例.我只能假设列大小的过程厌倦了计算和解决对列宽的某种"合理"解释 - 当然,这在很多时候都是完全不合理的.

在这一刻,我很沮丧,我正在考虑使用第三方产品ElfGrid,它解决了这些问题等等.查看文档,尤其是ElfColumnUtils,它们有一些非常方便的方法来处理这些问题.在我完成的测试中,它也非常快.


Ano*_*oop 0

如果您可以猜测可能的宽度,则可以将宽度设置为某个固定百分比。但我建议另一种选择:

  1. 将数据网格的variableRowHeight属性设置为true
  2. 将具有较长文本的列的 wordWrap 属性设置为 true。

通过这种方式,您的长文本将被放入多行中,并且只有行高会增加。尝试一下吧。如果您不想要这个,那么我认为您可能需要编写一个扩展 datagridColumn 的新类。

<mx:DataGrid dataProvider="{testAC}" width="80%" height="100%" variableRowHeight="true">
         <mx:columns>
              <mx:DataGridColumn dataField="company" wordWrap="true"/>                    <mx:DataGridColumn dataField="share"/>
              <mx:DataGridColumn dataField="expense"/>
        </mx:columns>
 </mx:DataGrid>
Run Code Online (Sandbox Code Playgroud)

干杯,PK