2011-04-04 88 views
0

我正在使用Flex4 mx:Datagrid,並試圖動態添加行。在datagrid中動態添加行

在我的數據網格中,在給定的時間有n行。最後一行包含文本「點擊添加行」,即當用戶單擊此單元格時,單元格變爲可編輯,用戶可以添加數據。一旦他/她按下輸入,一個新行會自動添加,最後一個單元再次包含文本「點擊添加行」。我已經能夠通過更新「itemEditEnd」事件上的數據網格的數據提供者來管理這一點。

我想解決的問題如下: 通常,當用戶在列中編輯任何單元格並按下Enter鍵時,下一行中的單元格將自動變爲可編輯狀態。然而,因爲在我的情況下,我刷新數據提供當用戶按下輸入,所以最後一個項目不能編輯。我嘗試了以下解決方法,但它們都沒有工作:

  1. updateCompete事件後調用「createItemEditor」。
  2. 在「itemEditEnd」函數中定義一個計時器事件,並在計時器完成後調用「createItemEditor」。

我相信我在這裏犯了一些愚蠢的錯誤,但找不到它。任何幫助將非常感激。

感謝, 卡皮爾

+0

只是爲了澄清:如果用戶點擊進入當添加新記錄時,您希望它刷新並且最後一行不可編輯。如果用戶在編輯現有行時按Enter鍵,您希望它轉到下一行並且是可編輯的,那麼正確? – 2011-04-04 15:26:48

回答

0

我覺得他總是有最後一行創建一個新的或編輯後連續編輯。看來你不刷新行的索引來設置可編輯。

+0

感謝艾麗西亞的建議......但是我發現,這不是問題。我已經發布瞭解決方案。 – 2011-04-06 05:17:40

0

我找到了解決問題的辦法。這個問題是「createItemEditor」的不正確使用。看來正確的做法是使用「editedItemPosition」。當此屬性被修改時,它會自動調度propertyChange事件。因此,而不是使用「createItemEditor」,當我設置以下

,那麼事情完全正常工作:)

divisionNamesGrid.editedItemPosition = {columnIndex: cIndex, rowIndex: rIndex};        

感謝, 卡皮爾