2010-02-27 122 views
2

我有flex advancedDataGrid(如果工作得更好,可以使用dataGrid,尽管我喜欢我的元列标题),并且我希望在顶部有一个组件弹出窗口一个选定的行。在Flex中查找datagrid/adavancedDataGrid行的x,y位置

问题是,我可以弄清楚如何引用datagrid的实际渲染行(而不是数据提供者的项),以获得它在屏幕上的位置。

有没有人有任何关于如何访问数据网格的“行”的理论,或至少得到它的立场?

干杯

回答

1

我们最终在引用父文档的itemrender中执行此操作。基本上,单击时,项目渲染器会在父引用中引用一个函数。

在这一点上我们的父文档知道选择哪一个小区,我们做了一些处理,以确定其X,Y坐标:

public function showPopup(selectedItemRenderer:UIComponent):void { 
     selectedCell = selectedItemRenderer; 

     PopUpManager.removePopUp(editPopup); 

     editPopup.height = dg.rowHeight; 

     BindingUtils.bindProperty(editPopup, "width", dg, "width"); 

     editPopup.setStyle("backgroundColor", 0xFF0000); 
     if(selectedCell != null) { 
      editPopup.x = selectedCell.localToGlobal(new Point(0,0)).x - 1; 
      editPopup.y = selectedCell.localToGlobal(new Point(0,0)).y - 1; 
     } 

     PopUpManager.addPopUp(editPopup, DisplayObject(Application.application)); 

    } 

<mx:DataGrid id="dg" width="500" height="100%" 
    dataProvider="{dummyData2}"> 
<mx:columns>   
    <mx:DataGridColumn 
     width="60"> 
     <mx:itemRenderer> 
      <mx:Component> 
       <mx:HBox> 
        <mx:Button label="edit" click="{parentDocument.showPopup(this)}" /> 
       </mx:HBox>       
      </mx:Component> 
     </mx:itemRenderer> 
    </mx:DataGridColumn> 
    <mx:DataGridColumn 
     dataField="Category"> 
    </mx:DataGridColumn>  
</mx:columns> 

0

最简单的方式来获得X,DataGrid的y位置是包装在画布里面的DataGrid和尝试捕捉mouseX和帆布mouseY的。如有必要,您可以使用localToGlobal方法。

1

我用dataGridColumn中的width属性,只需将宽度加在一起即可获得x位置,但问题在于当您使用lockColumnCount时,我的程序无法正确计算出x。

相关问题