如何在火花网格列上添加单词Wrap

时间:2012-05-24 16:04:21

标签: actionscript-3 flex flash-builder mxml

今天,我决定测试spark datagrid而不是mx:Datatagrid。 但是出现了一个问题:我没有找到wordWrap选项,你知道如何解决这个问题吗?

<s:DataGrid id="scrollableDG" borderVisible="true"  editable="true"
                     width="100%" height="{bgSuivi.height-90-90}">

 //Setup columns for scrollable datagrid
    var gridColumn:GridColumn = new GridColumn();
    gridColumn.dataField="scRub2";
    gridColumn.headerText = "Rub1";
    gridColumn.width = 80;
    gridColumn.editable = true;
    columnLst.addItem(gridColumn);

    var gridColumn:GridColumn = new GridColumn();
    gridColumn.dataField="scRub3";
    gridColumn.headerText = "Rub1";
    gridColumn.width = 80;
    gridColumn.editable = true;
    columnLst.addItem(gridColumn);

    var gridColumn:GridColumn = new GridColumn();
    gridColumn.dataField="scRub4";
    gridColumn.headerText = "Rub1";
    gridColumn.width = 80;
    gridColumn.editable = true;
    columnLst.addItem(gridColumn);
    scrollableDG.columns = columnLst;

由于

4 个答案:

答案 0 :(得分:8)

原始海报未选择答案我将前两个合并为一个 超级 回答! :P

您可以使用variableRowHeight在Spark DataGrid的所有列上启用自动换行:

<s:DataGrid variableRowHeight="true">
</s:DataGrid>

或者,您可以使用默认GridColumn项呈示器上的自动换行属性在单个列上启用自动换行:

<s:GridColumn dataField="fields.description" headerText="Description" >
    <s:itemRenderer>
        <fx:Component>
            <s:DefaultGridItemRenderer wordWrap="true"/>
        </fx:Component>
    </s:itemRenderer>
</s:GridColumn>

此外,在Grid Column示例中,如果您想要防止水平滚动条,我建议您设置宽度:

<s:GridColumn width="{dataGrid.width-column1.width-column3.width}" dataField="fields.description" headerText="Description" >
    <s:itemRenderer>
        <fx:Component>
            <s:DefaultGridItemRenderer wordWrap="true"/>
        </fx:Component>
    </s:itemRenderer>
</s:GridColumn>

我发现我必须将变量行高设置为true并设置列宽以获得我正在寻找的行为。

答案 1 :(得分:1)

答案 2 :(得分:0)

<强> [编辑]

糟糕,我的原始答案是指MX DataGridColumn组件,而不是Spark GridColumn。修改后的答案......

网格的默认项呈示器为DataGridItemRenderer,并且它具有需要设置为true的自动换行属性。不确定,但您可能还需要将网格的variableRowHeight属性设置为true ...

要在MXML中执行此操作,它看起来像这样:

<s:DataGrid variableRowHeight="true">
    <s:itemRenderer>
        <fx:Component>
            <s:DataGridItemRenderer wordWrap="true" />
        </fx:Component>
    </s:itemRenderer>
</s:DataGrid>

答案 3 :(得分:0)

flex4.6 之前,没有 s :DataGridItemRenderer,但有 mx :DataGridItemRenderer。所以,代码将是:

<s:GridColumn headerText="foo" labelFunction="fooLabelFunction">
    <s:itemRenderer>
        <fx:Component>
            <mx:DataGridItemRenderer wordWrap="true" />
        </fx:Component>
    </s:itemRenderer>
</s:GridColumn>