未选中复选框时,Flex-Disable数据网格行

时间:2016-04-07 09:15:11

标签: flex checkbox

我正在编写flex代码

  1. 第一列有复选框
  2. 选中复选框后,只应启用datadrid中的特定行,即我需要为特定行启用的所有其他列
  3. 由于我在每个datagridcolumn中使用itemrenderer,因此我无法访问其ID。

    如何根据复选框更改禁用或启用行?

3 个答案:

答案 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 -->

工作示例:http://wonderfl.net/c/6MS0