Flex 4:使用自定义ItemRender动态创建DataGrid,检测正确的单元格问题

时间:2011-03-08 08:10:53

标签: datagrid flex4 itemrenderer

  <mx:DataGrid id="calendarGrid" 
               dataProvider="{rows}"
               width="100%" 
               height="100%">
    <mx:columns/>
  </mx:DataGrid>

我以这种方式动态地为其添加列和行:

    var dgc0:DataGridColumn = new DataGridColumn("timeSlot");
    dgc0.headerText="Hours";
    hoursColumns=new Array();
    hoursColumns.push(dgc0);

for (var i:int=7;i<21;i++)
{
   var dgc:DataGridColumn = new DataGridColumn();
   dgc.headerText=i+":00-"+(i+1)+":00";
   dgc.itemRenderer=new ClassFactory(CustomRenderer);
   hoursColumns.push(dgc);
}

calendarGrid.columns=slotsColumns; 

for(var i:int =0;i<maxNum+1;i++)
{
   rows.addItem({timeSlot:"Day n° "+(i+1)});
}

我的CustomRenderer会检测用户点击并更改所选单元格的颜色。 当我在第一列上选择一个单元格时,它会被着色但如果我在同一列上选择另一个单元格,则第一个单元格未着色,第二个单元格未着色。 也许相同的渲染器用于列中的所有单元格? 有办法避免它吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我知道了!

对不起我的第二个不必要的问题:(我的自定义渲染器构造函数里面有这个代码:

addEventListener(FlexEvent.DATA_CHANGE, resetCell);

重置细胞颜色,我删除它,现在似乎工作... 对不起再次。