我有一个可编辑的Flex火花DataGrid两列。参数和值。 我被要求更改数据网格,使得第一列参数只能设置为来自设置数据列表的值。如何基于同一行中的另一个下拉列表设置数据提供者?
值的第二列也必须设置为基于下拉框的离散值,该下拉框基于参数列中的值。
如何设置值列的数据提供者,使其取决于参数列中的所选项目?
**请注意,这里提供的代码是简化的,在我的实际代码中,我将项目渲染设置为不同的类。但是,如果我必须这样做才能使数据可用,那么我会以内联方式进行操作。
<s:columns>
<s:ArrayList>
<s:GridColumn minWidth="100" dataField="parameter" headerText="Parameter" rendererIsEditable="true">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<fx:Script>
<![CDATA[
import spark.events.IndexChangeEvent;
protected function onParamDropListChange(event:IndexChangeEvent):void {
var value:String = (event.currentTarget as DropDownList).selectedItem;
data[column.dataField] = value;
}
]]>
</fx:Script>
<s:DropDownList id="paramDownList" requireSelection="true" width="100%"
labelField="name"
dataProvider="{outerDocument.loadedParamList}"
change="onParamDropListChange(event)">
</s:DropDownList>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
<s:GridColumn minWidth="200" dataField="value" headerText="Value" rendererIsEditable="true">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<fx:Script>
<![CDATA[
import spark.components.DataGrid;
import spark.events.IndexChangeEvent;
protected function onValueDropListChange(event:IndexChangeEvent):void {
var value:String = (event.currentTarget as DropDownList).selectedItem;
data[column.dataField] = value;
}
]]>
</fx:Script>
<s:DropDownList id="ValueDownList" requireSelection="true" width="100%"
labelField="values"
dataProvider="{SOME_REFERENCE_TO_THE_PARAM_COLUMN_VALUE}"
change="onValueDropListChange(event)">
</s:DropDownList>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
这里是参数和它们的可能值的一个例子。
{"params": [
{"name": "event_group", "values": ["CLIENTS", "SERVERS"]},
{"name": "event_sub_group", "values": ["LOADING", "MACHINE_LOADING"]},
{"name": "environment", "values": ["stage", "production"]}
]
}
因此,如果用户选择了在PARAMS列一行“event_group”,我希望用户只能够选择在同一行的“客户”或“服务器”,在值列。一旦选定,该值就会被更新并传播到相关对象。
嗯,听起来像我没有使关系清晰。每组参数都有一组可能的值。 即使我修改了这个,我将如何将选定参数的值列表返回给数据提供者或每一行? – Bob
我一定错过了一些东西。如何将这个类的实例设置为每一行? – Bob
现在更有意义了,谢谢,我会试试。 – Bob