有没有办法在DevX报告上重新排列对象?

时间:2013-10-24 07:19:33

标签: printing devexpress preview

我希望用户能够在devexpress打印预览上移动它并在完成后打印它。如果有可能,我可以获得一些可以开始寻找的方向吗? (我没有时间查看整个文档,听起来很懒,但devx在我短暂的时间内有点大。)

1 个答案:

答案 0 :(得分:1)

我认为您不能直接在打印预览中执行此操作,但您可以执行的操作是提供一个按钮,用于启动XtraReports Designer并从当前显示的文档传递布局。当用户完成编辑后,您可以在打印预览中重新加载文档,根据需要加载其新布局。您可能需要大量自定义设计器以删除限制用户仅编辑某些方面的各种选项 - 您可以隐藏许多功能,包括数据源,组件托盘等:

designer video

designer documentation

hide options in designer

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);
        }
    }