Stimulsoft Report 2015 Ultimate:如何隐藏Viewer的Save与Open按钮?
解决Stimulsoft Report 2015中隐藏Viewer的Save和Open按钮问题
我明白你遇到的困扰——直接使用报表查看器控件时,官方示例的窗体嵌入方法并不适用,之前尝试的代码也没达到预期效果。咱们来一步步梳理问题,给出可行的解决方案:
方法1:使用窗体上已有的PreviewControl控件
如果你的窗体上已经拖放了一个StiViewerControl(命名为PreviewControl),只需要在渲染报表前先设置它的显示属性,再绑定到报表即可:
private void btnItemList_Click(object sender, EventArgs e) { // 第一步:先设置Viewer控件的按钮显示属性 PreviewControl.ShowOpen = false; PreviewControl.ShowSave = false; PreviewControl.ShowSendEMail = false; // 第二步:配置报表变量 ItemListReport.Dictionary.Variables.Add("ProjectName", Globals.ProjectName); ItemListReport.Dictionary.Variables.Add("ProjectCode", Globals.ProjectCode); ItemListReport.Dictionary.Variables.Add("Username", Globals.SajiranClient.Username); // 第三步:编译并渲染报表 ItemListReport.Compile(); ItemListReport.Render(); // 第四步:绑定Viewer控件并显示报表 ItemListReport.ViewerControl = PreviewControl; ItemListReport.Show(); }
方法2:动态创建Viewer控件
如果是动态创建StiViewerControl,注意不要调用SaveConfig()和LoadConfig()——这两个方法会加载默认的Viewer配置文件,直接覆盖你手动设置的属性。正确的代码如下:
private void btnItemList_Click(object sender, EventArgs e) { // 第一步:创建Viewer控件并设置显示属性 Stimulsoft.Report.Viewer.StiViewerControl previewControl = new Stimulsoft.Report.Viewer.StiViewerControl(); previewControl.ShowOpen = false; previewControl.ShowSave = false; previewControl.ShowSendEMail = false; // 第二步:配置报表变量 ItemListReport.Dictionary.Variables.Add("ProjectName", Globals.ProjectName); ItemListReport.Dictionary.Variables.Add("ProjectCode", Globals.ProjectCode); ItemListReport.Dictionary.Variables.Add("Username", Globals.SajiranClient.Username); // 第三步:编译并渲染报表 ItemListReport.Compile(); ItemListReport.Render(); // 第四步:绑定报表到Viewer控件,按需添加到窗体并显示 previewControl.Report = ItemListReport; // 如果需要将控件嵌入窗体:this.Controls.Add(previewControl); previewControl.Dock = DockStyle.Fill; ItemListReport.Show(); }
为什么之前的代码没生效?
- 第一种方法:你只是把报表绑定到了已有PreviewControl,但没有设置该控件的
ShowOpen/ShowSave属性,按钮自然会保持默认显示状态。 - 第二种方法:你设置属性后调用了
SaveConfig()和LoadConfig(),其中LoadConfig()会读取默认的Viewer配置(通常是显示所有按钮),直接覆盖了你手动设置的属性,去掉这两个调用就能解决问题。
如果需要持久化这些设置,你可以在设置属性后调用SaveConfig(),但要确保之后不再调用LoadConfig(),或者在LoadConfig()之后重新设置一次属性。
内容的提问来源于stack exchange,提问作者Reza
相关产品推荐
相关产品推荐

