4

私の質問はadobeflexフォーラムでは答えられないので、ここで質問するのはこれが初めてです。少なくともついに、私はここでそれを管理するようになりました。

ええと、Flex 4.5+は、今日誰もが取り組んでいると思うので、sparkdatagridとmxprintdatagridコンポーネントの両方を一緒に動作させることがまだわかっていないので、この質問をしました。

私が達成しようとしているのは、sparkデータグリッド内のすべてのデータを印刷することです。したがって、調査を行うときは、PrintJobクラスまたはFlexPrintJobクラスを使用します。正常に動作しますが、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データグリッド列をmxデータグリッド列に変換できない場合、複数のページを使用してすべてのデータをSparkデータグリッドに印刷する方法はありますか?

よろしくお願いします。

-テッド

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 に答える