1
我想让用户在devexpress打印预览中移动东西,并在完成后才能打印。如果有可能,我可以从哪些方向开始寻找? (我没有时间去查看整个文档,可能听起来很懒,但是在短时间内,devx有点大)。有没有办法在DevX报表上重新排列对象?
我想让用户在devexpress打印预览中移动东西,并在完成后才能打印。如果有可能,我可以从哪些方向开始寻找? (我没有时间去查看整个文档,可能听起来很懒,但是在短时间内,devx有点大)。有没有办法在DevX报表上重新排列对象?
我不认为你可以直接在打印预览上做到这一点,但是你可以做的是提供一个按钮来启动XtraReports设计器并从当前显示的文档中传入布局。当用户完成编辑后,您可以在打印预览中重新加载文档,根据需要加载其新的布局。您可能需要大量定制设计师,除去各种选项限制用户只能编辑某些方面 - 你可以隐藏很多的功能,包括数据源,组件托盘等:
if(EditLayout(document))
RefreshDocument();
public static bool EditLayout(XtraReport document)
{
using (var designer = new XRDesignRibbonForm())
{
designer.OpenReport(document);
XRDesignPanel activePanel = designer.ActiveDesignPanel;
activePanel.AddCommandHandler(new DesignerCommandHandler(activePanel));
HideDesignerOptions(activePanel);
designer.ShowDialog();
changesMade = activePanel.Tag != null && (DialogResult)activePanel.Tag == DialogResult.Yes; //set this tag in your DesignerCommandHandler
activePanel.CloseReport();
}
return changesMade;
}
最后,改变文件的一些实用方法/报告布局:
internal static byte[] GetLayoutData(this XtraReport report)
{
using (MemoryStream mem = new MemoryStream())
{
report.SaveLayoutToXml(mem);
return mem.ToArray();
}
}
internal static void SetLayoutData(this XtraReport report, byte[] data)
{
using (var mem = new MemoryStream(data))
{
report.LoadLayoutFromXml(mem);
}
}