读书人

DataGrid里面itemRenderer里面的mx:

发布时间: 2012-04-28 11:49:53 作者: rapoo

DataGrid里面itemRenderer,里面的mx:Text控件显示总是错位,如何解决,困扰好久了
代码如下,也就是
<mx:Text height="100%" width="100%" id="txIssuedType" />内容有个时候显示不正常,经常显示错位,这一行的数据跑另外一行,有的时候干脆就不显示。。不知道什么原因,,好久了没有解决,难道是FLEX的bug,我的是FLEX3.

XML code
  <mx:DataGridColumn dataField="issuedType" width="80" headerText="类别" labelFunction="disIssuedType">     <mx:itemRenderer>    <mx:Component>      <mx:HBox width="100%" verticalAlign="middle" height="100%"        horizontalScrollPolicy="off" verticalScrollPolicy="off">         <mx:Text height="100%" width="100%" id="txIssuedType" />        <mx:Script>           <![CDATA[            override public function set data(value:Object) : void {              super.data = value;              setStyle("color", "#000000");              setStyle("fontWeight", "bold");              setStyle("backgroundColor", "");                          if (value.issuedType == "1"){                 txIssuedType.text = "年度下达";                     setStyle("backgroundColor", "0x06ff00");              }else if (value.issuedType == "2"){                             txIssuedType.text = "年度追加";                 setStyle("backgroundColor", "0xfcff00");              }else if (value.issuedType == "3"){                 txIssuedType.text = "合计";                         setStyle("backgroundColor", "0xff0000");              }else if (value.issuedType == "4"){                             txIssuedType.text = "已使用";                          }else{                             txIssuedType.text = "结余";                          }                       }                   ]]>                 </mx:Script>               </mx:HBox>             </mx:Component>           </mx:itemRenderer>         </mx:DataGridColumn>


[解决办法]
最好加个默认处理。。。
[解决办法]
没有出现这种情况!一般这里都是用data.issuedType !
[解决办法]
没遇到这类情况,学习下!!
[解决办法]
既然都重写了这个函数
override public function set data(value:Object) : void {
super.data = value;
}

在取值的时候为什么还是使用 value.issuedType ?
正常都是使用data.issuedType 取值的!
项目上很多用这种方法重写的 但是没有出现LZ的这种数据变动的情况。。。
[解决办法]
能将整个界面代码放上么?
datagridcolomns似乎不是控件啊。
flex的排版很娇的。。估计是在显示值的时候过多或过少引起的排版问题。。
[解决办法]
LZ的 代码没基本没什么问题~自己接触到的项目很多需要重写的!但是还真没出现这样的情况 真是怪了flex3 没有 flex4 也没有。。。
[解决办法]
【内容有个时候显示不正常,经常显示错位,这一行的数据跑另外一行,有的时候干脆就不显示。。不知道什么原因,】
【内容有个时候显示不正常】——如何不正常??
【经常显示错位,这一行的数据跑另外一行】——是当datagrid得到数据后就不正常,还是用滚轮滚动后,出现的数据跑到另一行?
【有的时候干脆就不显示】——是当datagrid得到数据后就不显示,还是用滚轮滚动后发生不显示的?
[解决办法]
<mx:DataGridColumn dataField="issuedType" width="80" headerText="类别" labelFunction="disIssuedType">
中的"disIssuedType"改为“outerDocument.disIssuedType(event,data)”

将private function disIssuedType(item:Object,column:DataGridColumn): String


中的column:DataGridColumn去掉。
方法改完private function disIssuedType(evt:event,item:Object): String

试试。

[解决办法]
把外层的hbox去掉应该就没问题了
[解决办法]

探讨

发现问题原因了,在itemRenderer里面如果要使用Component,对于没有默认高度的组件就会发生错位,不显示的状况,为什么TextInput可以,那是因为TextInput有默认的高度,而Label, Text, HBox都没有默认高度,你设置height="100%",系统无法自动设置这个高度是多少,还有一点原因我想是组件的初始顺序,也许itemRenderer里Component初……

读书人网 >flex

热点推荐