我有flex advancedDataGrid(如果工作得更好,可以使用dataGrid,尽管我喜欢我的元列标题),并且我希望在顶部有一个组件弹出窗口一个选定的行。在Flex中查找datagrid/adavancedDataGrid行的x,y位置
问题是,我可以弄清楚如何引用datagrid的实际渲染行(而不是数据提供者的项),以获得它在屏幕上的位置。
有没有人有任何关于如何访问数据网格的“行”的理论,或至少得到它的立场?
干杯
我有flex advancedDataGrid(如果工作得更好,可以使用dataGrid,尽管我喜欢我的元列标题),并且我希望在顶部有一个组件弹出窗口一个选定的行。在Flex中查找datagrid/adavancedDataGrid行的x,y位置
问题是,我可以弄清楚如何引用datagrid的实际渲染行(而不是数据提供者的项),以获得它在屏幕上的位置。
有没有人有任何关于如何访问数据网格的“行”的理论,或至少得到它的立场?
干杯
我们最终在引用父文档的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>
最简单的方式来获得X,DataGrid的y位置是包装在画布里面的DataGrid和尝试捕捉mouseX和帆布mouseY的。如有必要,您可以使用localToGlobal方法。
我用dataGridColumn中的width属性,只需将宽度加在一起即可获得x位置,但问题在于当您使用lockColumnCount时,我的程序无法正确计算出x。