2013-10-24 41 views
1

我想让用户在devexpress打印预览中移动东西,并在完成后才能打印。如果有可能,我可以从哪些方向开始寻找? (我没有时间去查看整个文档,可能听起来很懒,但是在短时间内,devx有点大)。有没有办法在DevX报表上重新排列对象?

回答

1

我不认为你可以直接在打印预览上做到这一点,但是你可以做的是提供一个按钮来启动XtraReports设计器并从当前显示的文档中传入布局。当用户完成编辑后,您可以在打印预览中重新加载文档,根据需要加载其新的布局。您可能需要大量定制设计师,除去各种选项限制用户只能编辑某些方面 - 你可以隐藏很多的功能,包括数据源,组件托盘等:

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); 
     } 
    } 
相关问题