2012-08-03 93 views
3

試圖在最後一欄刪除多餘的空間, 我試過各種方法都不行, 每當出現滾動條,網格的行爲以奇怪的方式 通知的最後一列的寬度是70,但不知何故網格增加一些額外的空間。DataGrid的額外空間

Last column has extra space even after makeing it not resizable

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
    <mx:Script> 
     <![CDATA[ 
      import mx.events.ResizeEvent; 
      import mx.collections.IViewCursor; 
      import mx.collections.ArrayCollection; 
      import mx.rpc.events.ResultEvent; 
      import mx.controls.dataGridClasses.DataGridColumn; 
      import mx.managers.CursorManager; 

      [Bindable] 
      private var itemAC:Array = [ 
       {name:"ABC", quantity:5, color:"Red", size:54, hasLogo:true}, 
       {name:"ABC1", quantity:6, color:"Green", size:46, hasLogo:false} 
       ]; 

     ]]> 
    </mx:Script> 
    <mx:Canvas width="25%" height="45%" backgroundColor="red" horizontalCenter="0" 
       verticalCenter="0" id="stuff" verticalScrollPolicy="off" horizontalScrollPolicy="off"> 
     <mx:DataGrid height="100%" width="100%" id="dg" dataProvider="{itemAC}" 
        horizontalScrollPolicy="auto"> 
      <mx:columns> 
       <mx:DataGridColumn width="70" dataField="name"/> 
       <mx:DataGridColumn width="70" dataField="quantity"/> 
       <mx:DataGridColumn width="70" dataField="color"/> 
       <mx:DataGridColumn width="70" dataField="size"/> 
       <mx:DataGridColumn width="70" dataField="hasLogo" resizable="false"/> 
      </mx:columns> 
     </mx:DataGrid> 
    </mx:Canvas> 

</mx:Application> 
+0

嘗試從第一個數據網格列中移除寬度屬性。也許你的datagrid控件大於5Columns x 70px。 – 2012-08-03 08:02:17

+0

試圖從第一列中刪除寬度,第一列寬變得更加似是而非,因爲最後一列存在相同的問題。 – Lalit 2012-08-03 08:53:18

+0

從最後一列刪除resizable =「false」,並將mx:Canvas width =「26%」放入mx:Canvas width =「25%」。由於DataGrid的寬度比畫布寬度大一些px .. – 2012-08-03 09:21:01

回答

1

設置數據網格寬度= 350。如果您不想要水平滾動條,請將其設置爲360

+0

需要滾動條,這就是爲什麼我演示與父母尺寸較小。 – Lalit 2012-08-13 11:32:58

+0

只有在出現水平滾動條時纔會出現此問題。否則網格會嘗試自動調整列寬。 – Lalit 2012-08-13 11:33:49

2

您正在將數據網格的寬度指定爲100%。因此無論每列的寬度如何,它都會佔用整個空間。由於您使用的空間少於分配的空間,其餘部分僅在末尾添加。因此,請嘗試按照您的要求調整寬度

以下是使畫布可水平滾動的MXML。並刪除Datagrid的寬度屬性

<mx:Canvas width="352" height="45%" backgroundColor="red" horizontalCenter="0" 
       verticalCenter="0" id="stuff" verticalScrollPolicy="off" horizontalScrollPolicy="auto"> 
     <mx:DataGrid height="100%" id="dg" dataProvider="{itemAC}" 
        horizontalScrollPolicy="auto"> 
      <mx:columns> 
       <mx:DataGridColumn width="70" dataField="name"/> 
       <mx:DataGridColumn width="70" dataField="quantity"/> 
       <mx:DataGridColumn width="70" dataField="color"/> 
       <mx:DataGridColumn width="70" dataField="size"/> 
       <mx:DataGridColumn width="70" dataField="hasLogo" resizable="false"/> 
      </mx:columns> 
     </mx:DataGrid> 
    </mx:Canvas> 
+0

我已經使用Flex SDK 4.5.1完成了這項工作,並且使項目與Flex3兼容。希望有助於 – 2012-08-10 08:11:06

+0

使父母變大並不能解決我的問題。問題是,當父母更小,並且屏蔽網格更大,以便滾動條出現。那麼最後一列的寬度總是比其他的大。 – Lalit 2012-08-13 11:37:23

+0

對於上面給出的代碼,如果您將Canvas寬度設置爲25%,則所有列的寬度保持相等,但您將得到一個不可避免的滾動條,因爲每列的寬度爲 – 2012-08-16 05:01:20

1

不要給所有的寬度留下第一個和你的代碼將是類似的。

<mx:Canvas width="25%" height="45%" backgroundColor="red" horizontalCenter="0" 
      verticalCenter="0" id="stuff" verticalScrollPolicy="off" horizontalScrollPolicy="off"> 
    <mx:DataGrid height="100%" width="100%" id="dg" dataProvider="{itemAC}" 
       horizontalScrollPolicy="auto" resizableColumns="false"> 
     <mx:columns> 
      <mx:DataGridColumn width="70" dataField="name"/> 
      <mx:DataGridColumn width="70" dataField="quantity"/> 
      <mx:DataGridColumn width="70" dataField="color"/> 
      <mx:DataGridColumn width="70" dataField="size"/> 
      <mx:DataGridColumn dataField="hasLogo"/> 
     </mx:columns> 
    </mx:DataGrid> 
</mx:Canvas> 

問題是在可調整大小=由所述resizableColumns = 「假」,在數據網格替換爲 「假」

這一定會解決你的問題。

有@美好的一天.....

+0

此處我試圖演示寬度如果出現水平滾動問題。最後一列總是比其他列寬 – Lalit 2012-08-13 11:35:42

0

試試這個horizo​​ntalScrollPolicy = 「關閉」

0

我這裏也有類似的問題。

解決方案:

額外的空間確實是因爲你已經指定DataGrid的寬度= 100%

這與調整應用到多種分辨率很有幫助。

<mx:Canvas id="datagridCanvas" width="25%" height="45%" backgroundColor="red" horizontalCenter="0" 
     verticalCenter="0" id="stuff" verticalScrollPolicy="off" horizontalScrollPolicy="off"> 
<mx:DataGrid height="100%" width="100%" id="dg" dataProvider="{itemAC}" 
      horizontalScrollPolicy="auto" resizableColumns="false"> 
    <mx:columns> 
     <mx:DataGridColumn minWidth="70" width="{datagridCanvas.width * 0.2}" dataField="name"/> 
     <mx:DataGridColumn minWidth="70" width="{datagridCanvas.width * 0.2}" dataField="quantity"/> 
     <mx:DataGridColumn minWidth="70" width="{datagridCanvas.width * 0.2}" dataField="color"/> 
     <mx:DataGridColumn minWidth="70" width="{datagridCanvas.width * 0.2}" dataField="size"/> 
     <mx:DataGridColumn minWidth="70" width="{datagridCanvas.width * 0.2}" dataField="hasLogo"/> 
    </mx:columns> 
</mx:DataGrid> 

1

我知道它是未來有點爲時已晚。但是,遲到比永遠晚。

我有完全相同的問題,我的解決方案是在右側添加一個空的啞列。它將佔用空間,給用戶一個小小的擺動空間來調整最右欄的大小。

//add an empty column at the right side 
col = new AdvancedDataGridColumn(""); 
col.width = 80; 
col.sortable = false; 
col.draggable = false; 
col.editable = false;