4

这是我第一次在这里提问,因为我的问题在 adobe flex 论坛中无法回答。所以至少最后,我来这里管理它。

好吧,Flex 4.5+ 我想现在每个人都在努力,所以我问了这个问题,因为我还没有发现spark datagrid 和 mx printdatagrid 组件一起工作。

我想要实现的是在我的 spark 数据网格中打印所有数据。因此,当我进行研究时,我们使用 PrintJob 或 FlexPrintJob 类。它工作正常,但是当我需要打印多个页面时,因为我的 spark 数据网格上的数据很长,我无法以某种方式找到如何做到这一点。打印输出仅达到我的 spark 数据网格的高度。所以在我的研究中,他们以某种方式管理它以使用 mx:PrintDataGrid 组件。但遗憾的是,他们也使用 mx:DataGrid 做到了这一点。现在我的问题来了 -如何使用 mx:PrintDataGrid 和 s:DataGrid

var printJob:PrintJob = new PrintJob();

if (printJob.start())
{
    var printGrid:PrintDataGrid = new PrintDataGrid();
    printGrid.width = printJob.pageWidth;
    printGrid.height = printJob.pageHeight;
    printGrid.columns = mySparkDataGrid.columns; // this line throws an exception
    printGrid.dataProvider = mySparkDataGrid.dataProvider;
    printGrid.visible = false;
    FlexGlobals.topLevelApplication.addElement(printGrid);

    while (printGrid.validNextPage)
    {
        printGrid.nextPage();
        printJob.addPage(printGrid);
    }

    printJob.send();
    parentApplication.removeElement(printGrid);
}  

所以拜托,这里有人可以帮我吗?如果无法将 spark datagrid 列转换为 mx datagrid 列,有没有办法可以使用多页打印 spark datagrid 上的所有数据?

提前非常感谢

-泰德

4

1 回答 1

0

尝试这样的想法(它对我有用)

for (var i:int = 0; i < mySparkDataGrid.columns.length - 1; i++) {

    var tmpColumn:DataGridColumn = new DataGridColumn();
    tmpColumn.headerText = (mySparkDataGrid.columns.getItemAt(i) as GridColumn).headerText;
    tmpColumns.push(tmpColumn);

}

printGrid.columns = tmpColumns;

现在我必须找到方法,如何使用 ItemRender。我的数据提供者有更大的对象,我必须解析它以在网格中显示正确的数据。我必须为打印做同样的事情。

于 2011-10-07T13:37:47.877 回答