Apache flex DataGrid列宽设置不正确
在下面的示例中,我调用了按钮单击事件上的OptimizeDataGrid方法,以根据数据调整列的大小。然而,在按钮单击事件的第一次,它调用了函数,而Datagrdi列宽单独设置不正确。而在第二次,它工作正常 例如:在下面的语句中,文本值为55,宽度填充值为25。但这两个值之和不在dg.columns[col].width中 dg.columns[col].width=文本+宽度填充 但在按钮点击事件的第二次发生时也是如此。有什么能帮我解决这个问题的吗。提前谢谢Apache flex DataGrid列宽设置不正确,apache-flex,Apache Flex,在下面的示例中,我调用了按钮单击事件上的OptimizeDataGrid方法,以根据数据调整列的大小。然而,在按钮单击事件的第一次,它调用了函数,而Datagrdi列宽单独设置不正确。而在第二次,它工作正常 例如:在下面的语句中,文本值为55,宽度填充值为25。但这两个值之和不在dg.columns[col].width中 dg.columns[col].width=文本+宽度填充 但在按钮点击事件的第二次发生时也是如此。有什么能帮我解决这个问题的吗。提前谢谢 0&&dg.dataProv
0&&dg.dataProvider!=空)
{
对于(列=0;列
很难控制列宽,因为有时列宽会被horizontalScrollPolicy属性覆盖。到死胡同时,它将关闭。因此,我通过在指定列的宽度之前使horizontalScrollPolicy启用来解决这个问题。在此之后,我再次在关闭时重置horizontalScrollPolicy属性以解决此问题。我不太确定您在问什么。
<mx:Script>
<![CDATA[
import mx.utils.ObjectUtil;
import mx.collections.ArrayCollection;
import mx.core.UITextField;
import mx.events.AdvancedDataGridEvent;
import mx.binding.utils.BindingUtils;
import mx.controls.Alert;
import mx.controls.AdvancedDataGrid;
import mx.controls.advancedDataGridClasses.*;
import mx.controls.DataGrid;
import mx.controls.dataGridClasses.*;
[Bindable]
private var dpFlat:ArrayCollection = new ArrayCollection([
{Region:"aabbCC", Territory:"Central Californiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000},
{Region:"AAbbcc", Territory:"Nevada",
Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}
]);
private function optimizeDataGrid(dg:Object,widthPadding:uint = 0,heightPadding:uint = 0):void
{
if ((!dg is DataGrid))
return;
var col:uint;
var colWidth:uint;
var tf:TextFormat;
var renderer:UITextField;
var widths:Array = new Array(dg.columnCount);
var height:uint = 0;
var dgCol:Object;
var text:uint = 0;
if (dg.columnCount > 0 && dg.dataProvider != null)
{
for (col = 0; col < dg.columnCount; ++col)
widths[col] = 0;
for each (var item:Object in dg.dataProvider)
{
for (col = 0; col < dg.columnCount; ++col)
{
renderer = new DataGridItemRenderer();
dg.addChild(renderer);
dgCol = dg.columns[col];
renderer.text = dgCol.itemToLabel(item);
widths[col] = Math.max(renderer.measuredWidth, widths[col]);
height = Math.max(renderer.measuredHeight, height);
dg.removeChild(renderer);
}
}
for (col = 0; col < dg.columnCount; ++col)
{
dg.addChild(renderer);
renderer.text = dg.columns[col].headerText;
widths[col] = Math.max(renderer.measuredWidth,widths[col]);
dg.removeChild(renderer);
text = widths[col];
dg.columns[col].width = text + widthPadding;
}
if (height != 0)
dg.rowHeight = height + heightPadding;
}
}
]]>
</mx:Script>
<mx:DataGrid id="myADG"
dataProvider="{dpFlat}" rowCount="{dpFlat.length}" sortableColumns="false">
<mx:columns>
<mx:DataGridColumn dataField="Region" />
<mx:DataGridColumn dataField="Territory_Rep" headerText="Territory Rep" />
<mx:DataGridColumn dataField="Territory" />
<mx:DataGridColumn dataField="Actual" />
<mx:DataGridColumn dataField="Estimate" />
</mx:columns>