Compositeを拡張するGWTウィジェットを印刷したいと思います。このウィジェットは、セルがListDataProviderで作成されたグリッドで構成されています。ユーザーがボタンの印刷をクリックすると、印刷するウィジェットが作成されます。これが完了したら、印刷を開始します。
Element element = widgetToPrint.getElement();
String content = element.getInnerHTML();
print(content);
public static native boolean print(String content)
/*-{
var mywindow = window.open('', 'Printing', '');
mywindow.document.write('<html><head><title>Test</title>');
mywindow.document.write('<link rel="stylesheet" href="/public/stylesheets/ToPrintWidget.css" type="text/css" media="all"/></head><body>');
mywindow.document.write(content);
mywindow.document.write('</body></html>');
mywindow.print();
return true;
}-*/;
だから、ここに私の問題があります:
このメソッドによって開かれるウィンドウには、ウィジェットのコア(UIバインダーによって構築された)が含まれていますが、一部の子が欠落しています...
ListDataProviderとそれに関連するFlowPanelの内部を見ると、データは一貫しています。つまり、リストとflowPanelにいくつかの項目があります。
その結果、印刷ウィンドウに表示されるはずです...問題はウィジェットの印刷方法に関係しているのではないかと思ったので、印刷を開始する直前にこのウィジェットをダイアログボックスに追加してみました。ウィジェットは適切に構築されました...そしてそれはそうでした。
そのため、私のウィジェットはダイアログボックスでうまく表示されますが、getElement()を使用してそのinnerHTMLをprintメソッドに渡そうとすると、一部のウィジェットが欠落しています... ListDataProviderの変更がDOMで適切に設定されていません...ウィジェットを通常のコンポーネントに追加するとどういうわけか機能しますが、innerHTMLを直接指定する必要がある場合は機能しません...
何か考えはありますか?
前もって感謝します。