2009-10-15 58 views
0

DataGrid中含有的DataGridColumn的TextInput的DataGridColumn按鈕。 DataGrid綁定到某些在文本框中顯示值的XML。 單擊某一行的按鈕時,我需要從文本框中取出該值並將其保存到相關的XML節點中。我如何循環一個數據網格行的柔性

我的解決方案只是將行的id傳遞給按鈕單擊事件,然後遍歷行,直到找到id,然後只抓取文本框的值。簡單。

但是,我可以找到關於遍歷行的唯一建議是通過底層dataProvider,這是無稽之談,因爲兩者不是同一回事。

這甚至可能嗎?或者,還有更好的方法?
注意我不想重寫標記,除非必須。
謝謝

回答

1

listData.rowIndex from itemRenderer返回當前行索引。您可以從點擊處理程序閱讀:

private function clickHandler(event:MouseEvent):void 
{ 
    var listData:BaseListData = IDropInListItemRenderer(event.target).listData; 
    var clickedRowIndex:Number = listData.rowIndex; 
} 
+0

確保該event.target真正實現IDropInListItemRenderer;例如,許多容器不能實現這一點,而許多組件卻這樣做。 –

+0

我相信他有一個'Button'作爲itemRenderer – Amarghosh

2

您可能正在使用的itemRendererDataGridColumn顯示文本框(又名TextInput組件)。我建議您在發生TextInput.dataChange事件(或者其他TextInput.Event適合於您準備保存該值時)時從TextInputitemRenderer中派遣自定義事件。
http://livedocs.adobe.com/flex/3/langref/mx/controls/TextInput.html

請記住,你需要泡此事件處理itemRenderer(例如,在DataGrid)之外 - itemRenderer的不處理事件好。
另外,一個保存TextInput價值的按鈕並不是一個好主意,因爲它們都是itemRenderer,並且很難在itemRenderer之間進行通信 - 這很難,因爲Adobe認爲它是不乾淨的代碼。
http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html

此外,這是另一種解決方案是改變數據提供程序的組合框(在你的情況,這是一個TextInput,而不是組合框):
http://www.switchonthecode.com/tutorials/simple-datagrid-item-editor-in-flex

+0

一些很好的建議謝謝我會調查 –