【问题标题】:Flex DataGrid: Programmatically Highlighting RowsFlex DataGrid:以编程方式突出显示行
【发布时间】:2011-02-11 16:22:59
【问题描述】:

这看起来应该非常简单,但我什至不知道如何循环遍历 Flex DataGrid 中的行。

基本上我想要完成的是这样的伪代码:

for each(var row:Row in myDataGrid.Rows)
{
    if(row.DataObject.Number == 1)
    {
        row.Color = Red;
    }
}

我正在尝试设置一个保存按钮,单击该按钮后,该按钮将处理保存,或突出显示无效行并弹出一条消息,告诉用户为什么这些行无效。由于其他一些复杂性,我无法在输入每一行时对其进行验证。任何帮助表示赞赏!谢谢。

【问题讨论】:

    标签: apache-flex validation actionscript datagrid


    【解决方案1】:

    数据网格旨在由其数据驱动,而不是直接操作。完成您尝试做的事情的一种方法是向提供程序中的数据对象添加某种属性,例如“有效”,并向渲染器添加代码以根据“有效”状态更改其外观。这样,您可以遍历数据提供程序中的对象并根据您的验证检查设置“有效”属性,这将导致数据网格中的行自动更改其外观。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      试试这样的:

      for each(var o:Object in myDataGrid.dataProvider)
      {
          if(o.Number == 1) {
              myDataGrid.selectedItems.push(o);
          }
      }
      

      在您的 mxml 中,您可以将数据网格的 selectionColor 设置为红色。见:http://blog.flexexamples.com/2008/02/19/setting-the-selection-color-and-selection-disabled-color-for-a-row-in-the-flex-datagrid-control/

      让我知道这是否适合你!

      【讨论】:

        【解决方案3】:

        我不确定您是否可以在数据网格本身上执行此操作,但如果您有每个项目的项目渲染器,您可以在那里设置突出显示逻辑。

        基本上,您定义数据网格的项目渲染器类:
        <mx:DataGrid itemRenderer="ItemRendererClass"(...) ></mx:DataGrid>

        然后您将“ItemRendererClass”类定义为实现 IDataRenderer:

        implements="mx.core.IDataRenderer"
        

        这是一个简单的解释,假设您可以自己弄清楚如何做到这一点:)

        【讨论】:

          【解决方案4】:

          我通过覆盖设置数据来实现这一点。我在下面提供了示例代码。

          override public function set data(value:Object):void
              {
                  super.data=value;
                  if(value!=null && value.hasOwnProperty("state") && value.state == "Final State"){               
                          setStyle("color", 0xb7babc);
                  }else{
                      setStyle("color", 0x000000);
                  }
                  this.selectable=false;
                  super.invalidateDisplayList();
              }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-06-06
            • 1970-01-01
            • 1970-01-01
            • 2023-03-16
            • 1970-01-01
            • 1970-01-01
            • 2020-11-04
            相关资源
            最近更新 更多