2009-12-28 53 views
3

我有一個包含在vbox中的數據網格,這個數據網格充當一個電子表格,它包含70列,最初10個是可見的,其餘都是隱藏的,用戶選擇其他動態顯示的列。 我需要這個數據網格來使用可用的最大屏幕寬度,所以我已經將應用程序的寬度設置爲100%以及vbox和datagrid,我還將datagrid的horizo​​ntalscrollpolicy設置爲「auto」,以便更多用戶選擇的列,他可以使用網格的水平滾動條來查看添加的列的其餘部分。這個當然會根據顯示器的大小而有所不同,如果用戶擁有一個巨大的顯示器,他將不會像使用中小型顯示器的用戶那樣有很長的滾動條。使用動態列修復數據網格寬度

問題是我顯示的列越多,datagrid reszies自身導致應用程序的水平滾動條出現,使我留下2個相鄰的水平滾動條,其中一個數據網格和其下面的應用程序之一。這對用戶來說都是令人困惑和惱火的,現在我必須使用兩個滾動條來查看添加的新列以及數據網格上方的其他控件不完全可見,我必須將應用程序的欄向右滾動才能看到它們。

我不明白,爲什麼數據網格在一定數量的列後延伸。當數據網格有10列時,最初在1280x800的分辨率下進行測試,並開始顯示其他列,數據網格的水平滾動條自動顯示,並且當我到達列號50時添加更多列時,數據網格自動伸展並且出現應用程序的水平滾動條(數字50與另一個分辨率會有所不同)。

我該如何阻止這種行爲?我只想要datagrid填充可用的最大屏幕寬度,並且當有更多的列時,只有datagrid的水平滾動條用於左側滾動&,而不是整個應用程序。

在此先感謝

回答

3

我發現2個解決方案,要麼將DataGrid的財產minColumnWidth像5例如一個很小的值,這將修復數據網格的寬度和阻止應用程序的滾動條的顯示,也可以使用這個解決方案發現here

+0

該鏈接是一個很好的解決方案 – dubbeat 2010-07-07 09:14:42

0

我想你可能想改變你的方法。關閉dataGrid的水平滾動策略,並使用容器對象的滾動條。然後,在顯示每列時,您可以添加到數據網格的寬度。根據我的經驗,這會給你一個比試圖在數據網格上強制滾動條更加一致的結果。

+0

恐怕這是不可能的因爲我有一個標籤導航器上方的數據網格和圖靈關閉數據網格的水平滾動條,並依靠容器的滾動條意味着爲了讓用戶點擊最後3個標籤,例如他必須向右滾動很多才能找到其他選項卡,因爲我會增加dat的寬度並添加每列。我只想要datagrid的滾動條而不是容器。 謝謝 – Yasmine 2009-12-28 16:55:29

+0

如果你想追求這個選項,你可以添加一個只包含dataGrid的子畫布,這樣你就可以讓一個孩子在不影響你的tabNav的情況下放置一個滾動條。 – invertedSpear 2009-12-28 18:35:39

0

根據我的說法,我不認爲VBox是必要的;也許你必須管理scrollPolicy和最大/最小高度/寬度值。 試試這個例子,用你的值改變VALUE AAAA/BBBB。 希望對大家有用

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication 
minWidth="VALUE AAAA" 
minHeight="VALUE BBBB" verticalScrollPolicy="off" 
horizontalScrollPolicy="off" 
xmlns:mx="http://www.adobe.com/2006/mxml"> 
    <mx:DataGrid resizableColumns="false" 
     horizontalScrollPolicy="on" 
     verticalScrollPolicy="on" 
     width="VALUE AAAA" 
     height="VALUE BBBB"> 
     <mx:columns> 
      <mx:DataGridColumn headerText="Column 1" dataField="col1"/> 
      <mx:DataGridColumn headerText="Column 2" dataField="col2"/> 
      <mx:DataGridColumn headerText="Column 3" dataField="col3"/> 
     </mx:columns> 
    </mx:DataGrid> 
</mx:WindowedApplication>