apache-flex Flex-未选中复选框时禁用数据网格行

btxsgosb  于 2022-11-01  发布在  Apache
关注(0)|答案(3)|浏览(186)

我正在编写flex代码
1.第一列有复选框
1.选中复选框时,只应启用datadrid中的特定行,即需要为特定行启用的所有其他列
由于我在每个datagridcolumn中使用itemrenderer,因此无法访问其外部的id。
如何根据复选框更改禁用或启用行?

q5lcpyga

q5lcpyga1#

感谢您的帮助。我尝试使用preventDefault,它禁用列,但我无法重新启用它。
具体到我的要求,我有3列,第一列包含复选框,其他两列包含文本框,所有这些都在datagrid列的单独itemrenderer中
如果选中复选框,则特定行中的后续文本框应可编辑,而如果未选中复选框,则文本框应不可编辑

wlwcrazw

wlwcrazw2#

禁用行可能有不同的含义。但是如果您的目的是禁止用户编辑行,即使datagrid的editable属性设置为true,您也可以使用event:ListEvent及其属性event.preventDefault()来实现这一点。
在单击复选框列时,调用一个函数,并通过ListEvent将rowIndex存储到全局变量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的详细信息。

cnh2zyt3

cnh2zyt33#

在itemrender内部,您可以使用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

相关问题