Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex:如何在s:DataGrid中右对齐单元格?_Apache Flex_Datagrid_Flash Builder_Flex4.5 - Fatal编程技术网

Apache flex Flex:如何在s:DataGrid中右对齐单元格?

Apache flex Flex:如何在s:DataGrid中右对齐单元格?,apache-flex,datagrid,flash-builder,flex4.5,Apache Flex,Datagrid,Flash Builder,Flex4.5,我有一个3列的s:DataGrid。我想右对齐最后两列中的文本,但找不到使其正常工作的方法。我尝试过创建一个自定义渲染器,并将textAlign设置为right,但不起作用 以下是我的自定义渲染器: <?xml version="1.0" encoding="utf-8"?> 我很想知道如何在网格中右对齐单元格。感谢所有能够提供帮助的人。如果您只需要显示文本,请查看课程。如果不指定项目渲染器,则SparkDataGrid将使用该渲染器 DefaultGridItemRe

我有一个3列的s:DataGrid。我想右对齐最后两列中的文本,但找不到使其正常工作的方法。我尝试过创建一个自定义渲染器,并将textAlign设置为right,但不起作用

以下是我的自定义渲染器:

<?xml version="1.0" encoding="utf-8"?>



我很想知道如何在网格中右对齐单元格。感谢所有能够提供帮助的人。

如果您只需要显示文本,请查看课程。如果不指定项目渲染器,则Spark
DataGrid将使用该渲染器

DefaultGridItemRenderer
具有
textAlign
样式,就像
标签一样


您的自定义渲染器无法正常工作的原因尚不清楚。

使用ItemRenders进行右对齐的诀窍是确保itemRenderer耗尽包含列的全部宽度,或者锚定到网格列的右侧。否则,标签右侧的文本将与itemRenderer对齐,就像不在网格右侧的标签一样

因此,请确保进行项目渲染的组件具有width=“100%”或具有right=something

以下是锚定到轴网柱右侧的示例

<s:DataGrid>
    <s:columns>
        <s:ArrayList>
            <s:GridColumn dataField="Artist"  width="100"/>
            <s:GridColumn dataField="Price"  width="100">
                <s:itemRenderer>
                    <fx:Component>
                        <s:GridItemRenderer>
                            <s:Label id="labelDisplay" textAlign="right" right="3" height="100%" verticalAlign="middle"/>
                        </s:GridItemRenderer>
                    </fx:Component>
                </s:itemRenderer>
            </s:GridColumn>
            <s:GridColumn dataField="Album"/>
        </s:ArrayList>
    </s:columns>
    <s:dataProvider>
        <s:ArrayList>
            <fx:Object>
                <fx:Artist>Pavement</fx:Artist>
                <fx:Price>11.99</fx:Price>
                <fx:Album>Slanted and Enchanted</fx:Album>
            </fx:Object>
            <fx:Object>
                <fx:Price>11.99</fx:Price>
                <fx:Artist>Pavement</fx:Artist>
                <fx:Album>Brighten the Corners</fx:Album>
            </fx:Object>
        </s:ArrayList>
    </s:dataProvider>
</s:DataGrid>

路面
11.99
心醉神迷
11.99
路面
照亮角落

感谢:我非常感谢STACKOVERFLOW中的许多帖子
特别是

在新的Flex AIR应用程序1中,我做了一个很好的创新右对齐+印度逗号分隔

这是通过自定义项呈现完成的;需要大量的搜索和代码工作 改编自Java,但Java、C#和AS3非常相似,它是一种cakewalk移植

在印度以外,没有人喜欢10万克朗;其他人对亿美元感到满意 但我们印度人认为是拉克斯人,梦想是克罗尔人;并找到百万(1000万)thora confushingh

在途中,我也做对了一个非常普遍的需要

灵活标记

<s:GridColumn id="dmbtr" headerText="Amt (INR)" dataField="dmbtr" >
  <s:itemRenderer>
    <fx:Component>
      <s:GridItemRenderer>
        <s:Label id="MyText" top="9" left="7" alpha="1"
                 text="{leftPad(data.dmbtr,10)}"
                 fontFamily="Lucida Console" textAlign="right"/>
      </s:GridItemRenderer>
    </fx:Component>
  </s:itemRenderer>
</s:GridColumn>
//10亿克罗尔印第安人风格

  var pat3:RegExp = /(\d+)(\d{3})$/;
  lstr = lstr.replace(pat3, "$1,$2");

  var pat2:RegExp = /(\d+)(\d{2},.+)/;

  var pat1:RegExp = /\d{3,},.+/;

  while(lstr.match(pat1)) 
    lstr = lstr.replace(pat2, "$1,$2");
//右对齐部件

  var strLen:int = lstr.length;
  var padLen:int = size - strLen;

  if (padLen <= 0) 
    return lstr;  

  var myspaces:String="                    ";  // 20 OK

  return myspaces.substring(0,padLen)+lstr;
var strLen:int=lstr.length;
var padLen:int=大小-strLen;

如果(padLen最好且简单的方法是:

<s:DataGrid>  
...  
    <s:columns>  
        <s:ArrayList>  
            <s:GridColumn id="col3" dataField="price" headerText="Price">
                <s:itemRenderer>
                    <fx:Component>
                        <s:DefaultGridItemRenderer textAlign="center" />
                    </fx:Component>
                </s:itemRenderer>
            </s:GridColumn>
            ...
        </s:ArrayList>
    </s:columns>
...
</s:DataGrid>

...  
...
...
资料来源:

  var strLen:int = lstr.length;
  var padLen:int = size - strLen;

  if (padLen <= 0) 
    return lstr;  

  var myspaces:String="                    ";  // 20 OK

  return myspaces.substring(0,padLen)+lstr;
<s:DataGrid>  
...  
    <s:columns>  
        <s:ArrayList>  
            <s:GridColumn id="col3" dataField="price" headerText="Price">
                <s:itemRenderer>
                    <fx:Component>
                        <s:DefaultGridItemRenderer textAlign="center" />
                    </fx:Component>
                </s:itemRenderer>
            </s:GridColumn>
            ...
        </s:ArrayList>
    </s:columns>
...
</s:DataGrid>