Flex 4:使用自定义 ItemRender 动态创建 DataGrid,检测右侧单元格时出现问题

发布于 2024-10-20 19:35:10 字数 887 浏览 2 评论 0原文

  <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)});
}

My CustomRenderer 检测用户单击并更改所选单元格的颜色。 当我选择第一列上的一个单元格时,它是彩色的,但如果我选择同一列上的另一个单元格,第一个单元格是无色的,第二个单元格是无色的。 也许同一列中的所有单元格都使用相同的渲染器? 有办法避免吗?

多谢。

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

I dynamically add columns and rows to it in this way:

    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)});
}

My CustomRenderer detects user clicks and changes the color of the selected cell.
When I select one cell on, say, the first column, it is colored but if I select another cell on the same column the first one is uncolored and the second isn't colored.
Maybe the same renderer is used for all cell in the column?
There's a way to avoid it?

Thanks a lot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

对你的占有欲 2024-10-27 19:35:10

我明白了!

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

addEventListener(FlexEvent.DATA_CHANGE, resetCell);

它重置单元格颜色,我已经删除它,现在似乎可以工作......
再次抱歉。

I've got it!

Sorry my second unnecessary question :( my custom renderer constructor has this code inside:

addEventListener(FlexEvent.DATA_CHANGE, resetCell);

which reset cell color, I've remove it and now seems work...
sorry again.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文