【发布时间】:2012-12-03 21:59:10
【问题描述】:
我想打印一个扩展 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;
}-*/;
所以,这是我的问题:
通过这种方法打开的窗口包含了widget的核心(由UI Binder构建),但是缺少一些子...
如果我查看 ListDataProvider 及其相关的 FlowPanel,数据是一致的,即我的列表和 flowPanel 中有几个项目。
因此,它应该在打印窗口上可见... 我认为问题可能与用于打印小部件的方法有关,因此我还尝试在启动打印之前将此小部件添加到对话框中,以查看小部件是否正确构建......确实如此。
所以我的小部件在对话框上显示良好,但如果我尝试通过使用 getElement() 将其 innerHTML 提供给打印方法,则缺少一些小部件......我觉得应该是的小部件当 ListDataProvider 更改未在 DOM 中正确设置时构建...当我将小部件添加到常规组件时它以某种方式工作,但是当我必须直接提供其 innerHTML 时它不起作用...
你有什么想法吗?
提前致谢。
【问题讨论】: