Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 禁用FlexDataGrid中的行_Apache Flex_Actionscript 3_Actionscript_Flex3 - Fatal编程技术网

Apache flex 禁用FlexDataGrid中的行

Apache flex 禁用FlexDataGrid中的行,apache-flex,actionscript-3,actionscript,flex3,Apache Flex,Actionscript 3,Actionscript,Flex3,除非我在这里遗漏了一些明显的东西,否则无法取消数据网格中的一行或多行。我希望DataGrid或List组件上有disabledRows或disabledRowIndidices属性,但这似乎不存在 我发现了一个“renderArray”属性,它的作用域是mx_internal,包含datagrid中所有单元格的所有ItemRenders。因此,我可以检查渲染器中数据的类型和值,并启用或禁用同一行的所有单元格,但这感觉太像黑客了 有什么建议吗 编辑:我意识到禁用一行可能意味着不同的事情。在我的例子

除非我在这里遗漏了一些明显的东西,否则无法取消数据网格中的一行或多行。我希望DataGrid或List组件上有disabledRows或disabledRowIndidices属性,但这似乎不存在

我发现了一个“renderArray”属性,它的作用域是mx_internal,包含datagrid中所有单元格的所有ItemRenders。因此,我可以检查渲染器中数据的类型和值,并启用或禁用同一行的所有单元格,但这感觉太像黑客了

有什么建议吗


编辑:我意识到禁用一行可能意味着不同的事情。在我的例子中,这意味着即使datagrid的editable属性设置为true,也无法编辑行。然而,这也可能意味着无法选择行,但这不是我想要的。Alex Harui在这里提供了一个源代码的好例子,这是一个有点冗长的解决方案,但涵盖了鼠标和键盘与datagrid的交互。我同意你的看法,令人惊讶的是没有一个“内置”的方法来完成这项工作。

实际上,最好通过“ItemEditStart”来完成。
在这里寻找一个好的教程:

要做到这一点,您需要该行的一些数据来表示它是不可编辑的。然后当“ItemEditBeging”启动时,检查数据或行索引以启用/禁用event.preventDefault的默认行为

public function preventEditing(event:DataGridEvent):void
{   
    var status : Boolean = ArrayObjs[rowIndex].isYourCondition;

    if (status == true)
    {
        event.preventDefault();
    }
}

另一个选项是为数据单元创建自定义ItemRenderer,但不要认为这是您想要的,因为您需要为每个单元创建自定义ItemRenderer

只需将一个函数设置为DataGrid的“itemEditBegin”,该函数执行以下操作:

protected function validateEdition(event:DataGridEvent):void{
    if([EDITION CRITERA NOT MET]){
          event.preventDefault();
    }
}

<mx:DataGrid id="grid" itemEditBegin="validateEdition(event)" editable="true">
      <mx:columns>
         [[YOUR COLUMN CONFIGURATION]]
      </mx:columns>
</mx:DataGrid> 
受保护函数validatedition(事件:DataGridEvent):无效{
如果([不符合版本标准]){
event.preventDefault();
}
}
[[您的列配置]]
event.preventDefault()将停止DataGrid将ItemRenderer切换到ItemEditor,从而停止不符合条件的行的编辑。 您的DataGrid必须是可编辑的才能工作


这应该可以解决问题。

禁用对datagrid行意味着什么?在我的情况下,这意味着无法编辑它。但是,这也可能意味着无法选择行。好的评论,我将更新这个问题。另外,数据网格不是由行定义的,而是由列定义的。要禁用某些行,您需要了解底层数据,这意味着在ItemRenders中处理它。