2010-10-08 185 views
2

我有一個數據網格,用戶可以拖動列並重新定位它們。 但有一個奇怪的要求,一些列不應該拖到其他列的左側。flex datagrid列拖動

例如,假設欄目有:名稱,價格,開始日期,結束日期,

的結束日期不應被拖動並放置在開始日期之前。 即用戶可以有

  • 開始日期,價格,名稱,結束日期。
  • 名稱,開始日期,價格,結束日期。

但是,在開始日期之前沒有結束日期。

有沒有辦法做到這一點flex? 有沒有辦法知道用戶在哪裏試圖刪除列並顯示錯誤消息?

回答

2

該解決方案涉及解決方法。

  • 首先使用高級數據網格而不是數據網格。
  • 然後創建一個列組,併爲其添加開始日期和結束日期列。
  • 然後在列組中設置childrenDragEnabled =「false」。
  • 這就是工作。下面的示例代碼。

解決方案(通知childrenDragEnabled="false"):

<mx:AdvancedDataGridColumnGroup childrenDragEnabled="false"> 
    <mx:AdvancedDataGridColumn dataField="startDate" /> 
    <mx:AdvancedDataGridColumn dataField="endDate" /> 
</mx:AdvancedDataGridColumnGroup> 
0

您需要監聽headerShift事件,檢查新索引與先前不允許的索引,然後自行移回。

+0

謝謝你,這個事件似乎後列的交換設定被解僱。即grid.columns [oldIndex]不是要移動的列,而是要刪除的列。另外,我們如何阻止這個事件完成列交換。 - 這還不清楚,我需要探索。請讓我知道你是否可以點亮它。 – 2010-10-21 03:22:28

+0

似乎沒有與該事件對應的受保護方法,並且該事件本身似乎在事件之後被分派。你需要猴子補丁的DG代碼,使其工作我懷疑,DG的外部沒有好辦法,我可以看到停止轉變。 – 2010-10-21 10:34:16

+0

:(我可能會嘗試將事件中的列交換回來,而不是阻止它。希望這應該是一個足夠好的工作。謝謝。 – 2010-10-22 18:41:24