【发布时间】:2016-09-13 18:39:40
【问题描述】:
我正在编写弹性代码
- 第一列有复选框
- 选中复选框后,应仅启用 datadrid 中的特定行,即我需要为特定行启用的所有其他列
由于我在每个 datagridcolumn 中使用 itemrenderer,我无法在外部访问它的 id。
如何根据复选框更改禁用或启用行?
【问题讨论】:
标签: apache-flex checkbox
我正在编写弹性代码
由于我在每个 datagridcolumn 中使用 itemrenderer,我无法在外部访问它的 id。
如何根据复选框更改禁用或启用行?
【问题讨论】:
标签: apache-flex checkbox
感谢您的帮助。 我尝试使用 preventDefault,它会禁用列,但我无法重新启用它。
为了具体说明我的要求,我有 3 列, 第一个包含复选框,另外两个包含文本框,所有这些都在 datagrid 列的单独 itemrenderers 内
如果选中复选框,则特定行中的后续文本框应该是可编辑的 并且当复选框未选中时,文本框不应该是可编辑的
【讨论】:
禁用一行可能有不同的含义。但是,如果您的意图是禁止用户编辑该行,即使数据网格的可编辑属性设置为 true,您也可以使用 event:ListEvent 及其属性event.preventDefault() 来实现此目的。
单击复选框列时,调用函数并将rowIndex 通过ListEvent 存储到全局变量checkedIndex 中。在数据网格的 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。
【讨论】:
在 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 -->
【讨论】: