我正在编写flex代码
由于我在每个datagridcolumn中使用itemrenderer,因此我无法访问其ID。
如何根据复选框更改禁用或启用行?
答案 0 :(得分:0)
禁用行可能有不同的含义。但是,如果您的目的是禁止用户编辑该行,即使datagrid的editable属性设置为true,您也可以使用event:ListEvent
及其属性event.preventDefault()
来实现此目的
单击复选框列,调用函数并将rowIndex通过ListEvent
存储到全局变量checkedIndex
中。在datagrid的itemClick属性上调用下面的函数。
public function disableEditing(event:ListEvent):void
{
if(event.columnIndex == 0)
//call a function & assign the value into global var checkedIndex
else
{
var currentIndex: Number = event.rowIndex;
if (currentIndex != checkedIndex)
{
event.preventDefault();
}
}
}
有关ListEvent here的更多信息。
答案 1 :(得分:0)
感谢您的帮助。 我尝试使用preventDefault,它会禁用列,但我无法启用它。
根据我的要求,我有3列, 首先包含复选框,其他两个包含文本框,所有这些都在datagrid列的单独的itemrenrerers中
如果选中复选框,则特定行中的后续文本框应该是可编辑的 当取消选中复选框时,文本框不应该是可编辑的
答案 2 :(得分:0)
从itemrenderer内部,您可以使用data.fieldname
访问记录数据
因此,如果您想根据其他列动态更改,则不需要access id of component which is inside itemrender
只需绑定数据。
<mx:TextInput enabled="{data.isChecked}"/> <!-- For Flex3 -->
<s:TextInput enabled="{data.isChecked}"/> <!-- For Flex4 -->