代码之家  ›  专栏  ›  技术社区  ›  Christophe Herreman

禁用Flex DataGrid中的行

  •  2
  • Christophe Herreman  · 技术社区  · 16 年前

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

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

    编辑 :我意识到禁用行可能意味着不同的事情。在我的例子中,这意味着即使datagrid的edit able属性设置为true,也不能编辑行。不过,这也可能意味着无法选择行,但这不是我要找的。

    4 回复  |  直到 16 年前
        1
  •  6
  •   ProKiller AndrewB    13 年前

    为此,您需要该行的一些数据来表示该行不可编辑。然后当“itemEditBeging”检查数据或行索引时,使用event.preventDefault启用/禁用默认行为。。。

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

    另一个选择是为数据单元格创建自定义项呈现程序,但不要认为这是您想要的,因为您需要为每个单元格创建它。

        2
  •  2
  •   doobie doobie    16 年前

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

        3
  •  0
  •   user56512 user56512    16 年前
        4
  •  0
  •   Chepech    14 年前

    只需将一个函数设置为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> 
    

    event.preventDefault()将阻止DataGrid将ItemRenderer切换到ItemEditor,以便停止不符合条件的行的编辑。 您的数据网格必须是可编辑的才能工作。

    这应该能起到作用。

    推荐文章