我想打印一个AdvancedDataGrid,我正在使用此代码
public function doPrint():void {
myPrintJob = new FlexPrintJob();
myPrintDataGrid = new PrintAdvancedDataGrid();
myPrintDataGrid.source=this.dataGrid;
StageReference.instance.addElement(myPrintDataGrid);
if (myPrintJob.start()) {
myPrintJob.addObject(myPrintDataGrid, FlexPrintJobScaleType.MATCH_WIDTH);
myPrintJob.send();
StageReference.instance.removeElement(myPrintDataGrid);
}
else
{
StageReference.instance.removeElement(myPrintDataGrid);
}
}
问题是标题文本使用了大量填充或类似的东西,因此文本不适合
如果有人可以给我任何提示,我不知道该寻找什么(也许尝试创建我自己的标题渲染器?)
我找到原因,FlexPrintJob.addObject缩放网格,我认为标题需要更多的帧,直到更新,缩放中有一些奇怪的东西,我在调试中注意到宽度设置为200,即使页面宽度为600,现在没有真正的解决方案,因此避免缩放。
答案 0 :(得分:0)
Flex标签/文本对象如果认为文本没有足够的空间,通常会截断文本。
我快速查看AdvancedDataGridHeaderRenderer
并确认,如果文字太宽且网格的variableRowHeight
属性,渲染器会将其设置为UITextField以截断文本是假的。
AdvancedDataGridHeaderRenderer的commitProperties()方法的一个片段(第462行):
label.text = listData.label ? listData.label : " ";
label.multiline = grid.variableRowHeight;
// Get the headerWordWrap for a column, using the default wordWrap if none specified
if( _data is AdvancedDataGridColumn)
label.wordWrap = grid.columnHeaderWordWrap(_data as AdvancedDataGridColumn);
实际的截断发生在AdvancedDataGridHeaderRenderer的updateDisplayList()方法中(第628行)。
知道这一点,你有一些选择:
使用调试器逐步执行commitProperties / updateDisplayList中的代码,看看为什么标题中的标签对象认为它们需要如此之小。在你的屏幕截图中,似乎有足够的空间 - 但由于某些原因,标签不这么认为。
覆盖AdvancedDataGridHeaderRenderer的commitProperties / updateDisplayList方法,使其完全符合您的要求
设置网格/渲染器的样式和属性以允许更多宽度和/或多行文本
要执行后者,您需要执行以下某些组合:
AdvancedDataGridColumn