我想要实现的目标是使我的Flex Datagrid中的财务数据采用颜色编码 - 如果正面则为绿色; 红色,如果它是负面的.如果我想要着色的列是dataProvider的一部分,这将是相当简单的.相反,我基于作为dataProvider一部分的另外两列来计算它.这仍然相当简单,因为我可以在ItemRenderer中再次计算它,但计算的另一部分是基于textBox的值.所以,我想我需要能够做的就是发送文本框的定义ItemRenderer的值,但是因为该值存储在主MXML应用程序,我不知道如何访问它.将其作为参数发送似乎是最好的方式,但也许还有另一种方法.
这是我的ItemRenderer的当前代码:
package {
import mx.controls.Label;
import mx.controls.listClasses.*;
public class PriceLabel extends Label {
private const POSITIVE_COLOR:uint = 0x458B00 // Green
private const NEGATIVE_COLOR:uint = 0xFF0000; // Red
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
/* Set the font color based on the item price. */
setStyle("color", (data.AvailableFunding >= 0) ? NEGATIVE_COLOR : POSITIVE_COLOR);
}
}
Run Code Online (Sandbox Code Playgroud)
(data.AvailableFunding不存在)
那么有谁知道我将如何实现这一目标?
我正在努力找出在Flex(3.4)DataGrid中嵌入ComboBox的"正确"方法.通过权利(例如根据这个页面http://blog.flexmonkeypatches.com/2008/02/18/simple-datagrid-combobox-as-item-editor-example/)它应该很容易,但我不能为我的生活使这项工作.
我对上面链接的示例的不同之处在于,我的显示值(用户看到的内容)与我想在我的数据提供程序中选择并存储的id值不同.
所以我拥有的是:
<mx:DataGridColumn headerText="Type" width="200" dataField="TransactionTypeID" editorDataField="value" textAlign="center" editable="true" rendererIsEditor="true">
<mx:itemRenderer>
<mx:Component>
<mx:ComboBox dataProvider="{parentDocument.transactionTypesData}"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
Run Code Online (Sandbox Code Playgroud)
transactionTypesData"数据"和"标签"字段在哪里(根据什么ComboBox- 为什么它不提供labelField和idField,我永远不会知道).
无论如何,上面的MXML代码不能以两种方式工作:
那么,有没有人有类似的情况工作?
我试图弄清楚如何构建一个包含(许多)的视图:
...
...
关键是父母必须是可以检查的,并且基于孩子必须更改图标.一些人可以指出我正确的方向,因为从我发现什么似乎没有什么对我有用.
checkbox android itemrenderer radio-button expandablelistview
我在组合框中使用自定义项呈示器来显示自定义绘图而不是默认文本标签.
这适用于下拉列表,但显示的项目(当列表关闭时)仍然是我的对象的文本表示.
有没有办法让显示的项目与下拉列表中的项目呈现方式相同?
我有一个自定义ItemRenderer,它在3个面板中显示5个文本输入:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox
xmlns:mx="http://www.adobe.com/2006/mxml"
height="300"
width="800"
creationComplete="onCreationComplete()"
>
<!-- code-behind -->
<mx:Script source="ChainListRenderer.mxml.as" />
<mx:Label text="{data.title}" fontSize="25" fontWeight="bold" width="100%" textAlign="center" />
<mx:HBox>
<mx:Panel id="triggerPanel" title="Trigger" width="260">
<mx:VBox id="tpBoxes" width="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:TextInput id="trigger1" width="100%" textAlign="left" tabIndex="0" tabEnabled="true" />
<mx:TextInput id="trigger2" width="100%" textAlign="left" tabIndex="1" tabEnabled="true" />
<mx:TextInput id="trigger3" width="100%" textAlign="left" tabIndex="2" tabEnabled="true" />
<mx:TextInput id="trigger4" width="100%" textAlign="left" tabIndex="3" tabEnabled="true" />
<mx:TextInput id="trigger5" width="100%" textAlign="left" tabIndex="4" tabEnabled="true" />
</mx:VBox>
</mx:Panel>
<mx:Panel id="linkPanel" title="Link" width="260">
<mx:VBox id="lpBoxes" …Run Code Online (Sandbox Code Playgroud) 我有一个List,项呈示器显示一个图像.每当您滚动列表,并且项呈示器刷新时,它都会重新下载图像.导致那里永远是一个延迟.是否有某种方法可以缓存它,因此每次滚动列表时都不会每次都重新下载导致显示图像的延迟?
谢谢!
我正在尝试访问itemRenderer中的DataGridColumn的dataField.下面是dataGrid:
<mx:Script>
<![CDATA[
[Bindable] public var weeksOfMoth:ArrayCollection = new ArrayCollection([
{monday:30, tuesday:31, wednesday:1, thursday:2, friday:3, saturday:4, sunday:5},
{monday:6, tuesday:7, wednesday:8, thursday:9, friday:10, saturday:11, sunday:12},
{monday:13, tuesday:14, wednesday:15, thursday:16, friday:17, saturday:18, sunday:19},
{monday:20, tuesday:21, wednesday:22, thursday:23, friday:24, saturday:25, sunday:26},
{monday:27, tuesday:28, wednesday:29, thursday:30, friday:1, saturday:2, sunday:3}
]);
]]>
</mx:Script>
<mx:DataGrid dataProvider="{weeksOfMoth}" >
<mx:columns>
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="monday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="tuesday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="wednesday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="thursday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="friday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="saturday" />
<mx:DataGridColumn itemRenderer="view.DateRenderer" dataField="sunday" /> …Run Code Online (Sandbox Code Playgroud) 我有以下形式的radioselect选项:
jobStatus = forms.ChoiceField( widget=forms.RadioSelect())
Run Code Online (Sandbox Code Playgroud)
但是,它会在<ul> <li> .. </li></ul>标签中呈现单选按钮.
你能建议我用任何方式渲染唯一的无线电按钮输入吗?
谢谢
我有一个带有我自己的自定义渲染器的Spark列表.当用户滚动列表中的项目时,左侧和右侧按钮出现在行中,允许用户更改正在呈现的值的值.例如,如果有5个优先级(1到5),则左按钮减小值,右按钮增加值.
快速注意:它们不是真正的按钮,而是s:图像设计像按钮一样工作.
现在这个工作正常,除了在一个特定条件下:如果用户选择行,然后将光标移出行,然后返回到行,当用户单击任一按钮时,没有任何反应.即使这种情况听起来令人费解,但测试用户仍然会这样做!这对他们来说真的很令人沮丧.
我发现了这种行为的原因:按钮仅显示在项呈示器的悬停和选定状态中.这就是我想要发生的事情 - 按钮不应该是可见的,除非用户的指针能够按下它们.在列表中选择项目时,渲染器的状态将转到选中状态.再次单击不会更改状态.将指针移出行,然后再次返回并单击(在已选择的行上)使行的状态从选定状态变为正常状态(鼠标按下时)并返回到选定状态(在鼠标按下时).我发现这很奇怪!这意味着按钮实际上在处于正常状态时(它应该)因此没有被点击而消失.
我曾经考虑过,不知何故,我可以在项目渲染器的Z顺序中将图像"更高",因此它们会在项目渲染器获取之前拦截click事件,但我无法使其工作.
有人可以帮忙吗?
如果有帮助,ItemRenderer的片段如下:
<s:HGroup width="150" verticalAlign="middle" verticalCenter="0">
<s:Image id="previousItemButton" buttonMode="true" source="{_leftArrow}" width="16" height="16" visible.normal="false" visible.hovered="true" visible.selected="true" click="previousClicked(event)"/>
<s:Label text="{data.outputFormat.value}" width="100%" click="nextClicked(event)"/>
<s:Image id="nextItemButton" buttonMode="true" source="{_rightArrow}" width="16" height="16" visible.normal="false" visible.hovered="true" visible.selected="true" click="nextClicked(event)"/>
</s:HGroup>
Run Code Online (Sandbox Code Playgroud)
更新:
该问题是由构成ItemRenderer的组件的最高级别上的虚假rollOut事件引起的.这个rollOut称为一个方法,它包括:
protected function hgroup1_rollOutHandler(event:MouseEvent):void {
if (this.selected) {
this.selected = false;
}
}
Run Code Online (Sandbox Code Playgroud)
这导致了问题并删除了rollOut,该方法解决了这个问题.我不知道为什么在mouseDown上激活转出的原因.
是否可以将渲染器用于高级数据网格中的树列并仍然保持层次结构功能?如果我使用渲染器提供程序,则会丢失树下拉列表的箭头.我想保留树功能并更改列的显示.(而不仅仅是文件夹图像)
<mx:AdvancedDataGridRendererProvider column="{titleCol}" depth="1"
renderer="com.something.titleColumnRenderer"/>
Run Code Online (Sandbox Code Playgroud)
titleColumnRenderer:
<mx:VBox width="100%" xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Label id="titleLabel" textAlign="center" text="sometext" width="100"/></mx:VBox>
Run Code Online (Sandbox Code Playgroud)