我想打印一个扩展 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 Binder 构建),但缺少一些子...
如果我查看 ListDataProvider 及其相关的 FlowPanel,数据是一致的,即我的列表和 flowPanel 中有几个项目。
因此,它应该在打印窗口上可见......我认为问题可能与用于打印小部件的方法有关,所以我也尝试在启动打印之前将此小部件添加到对话框中,看看是否该小部件已正确构建...确实如此。
所以我的小部件在对话框上显示得很好,但是如果我尝试通过使用 getElement() 将其 innerHTML 提供给打印方法,一些小部件会丢失......我感觉应该在ListDataProvider 更改未在 DOM 中正确设置...当我将小部件添加到常规组件时它以某种方式工作,但是当我必须直接提供其 innerHTML 时它不起作用...
你有什么主意吗 ?
提前致谢。