一、如何往报表对象里传递外部变量值
有时候做报表需要把外部程序的变量值传递到报表中,比如当前登录的用户名、用户编号什么的。我是用了一个哈希表。
Hashtable ht;
ht = new Hashtable(); //创建一个Hashtable实例
ht.Add("用户名", "超级用户"); //添加keyvalue键值对
ht.Add("用户编码", "super");
ht.Add("性别", "男");
ht.Add("爱好", "女");
然后把这个哈希表当做变量传递给自己做的一个报表处理接口中,在接口中用foreach循环,把哈希表中的键值绑定到报表对象中。
if (Param.Count > 0)\\哈希表对象Param
{
foreach (DictionaryEntry de in Param)
{
report.Dictionary.Variables.Add(new StiVariable("MyVariables", de.Key.ToString(), typeof(string), de.Value.ToString(), true));
//MyVariables是一个别名,一会在运行截图中可以看到
}
}
report.Dictionary.Synchronize();//这句很重要
运行结果
二、在设计器中,保存想用自己的方法,怎么写。
private void Design_Shown(object sender, EventArgs e)//窗体显示事件
{
StiOptions.Engine.GlobalEvents.SavingReportInDesigner +=
new Stimulsoft.Report.Design.StiSavingObjectEventHandler(GlobalEvents_SavingReportInDesigner);
}
private void GlobalEvents_SavingReportInDesigner(object sender, Stimulsoft.Report.Design.StiSavingObjectEventArgs e)
{
if (stiRibbonDesignerControl1.Report == null) return;
e.Processed = true;
//上面两句保留
//下面写想做的操作
SelfSave();
//保存完直接关闭该窗体
this.Close();
}
三、设计器中,一些按钮功能不想用,咋屏蔽
//设计器中不能预览
StiOptions.Designer.PreviewReportVisible = false;
//设计器中不能用html预览
StiOptions.Designer.HtmlPreviewReportVisible = false;
//设计器中脚本编写界面显示
StiOptions.Designer.CodeTabVisible = true;
//StiOptions.Designer这个里面有很多属性,可以自己看看
this.stiRibbonDesignerControl1.ShowLocalizationMenu = false;
this.stiRibbonDesignerControl1.ShowHelp = false;
this.stiRibbonDesignerControl1.ShowTabHomeBarStyle = false;
this.stiRibbonDesignerControl1.ShowCaption = false;
不过左边有个蓝色的File按钮,我没找到让它消失的方法,我是自己找了个panel控件把它挡住了。好像是StiOptions.Designer中有个什么控制File的属性,但是我一用报异常。
前后对比,报表内容请忽略,主要看菜单和功能区
前
后
不过好像右键弹出菜单中的“预览”功能依然能看见。但是勾选和不勾选,都看不到预览界面。
四、预览控件的一些功能屏蔽
//我就屏蔽了这几个
this.stiRibbonViewerControl1.ShowBookmarksPanel = false;
this.stiRibbonViewerControl1.ShowOpen = false;
this.stiRibbonViewerControl1.ShowThumbsPanel = false;
前后对比
前
后
凑合喊一下吧,这图比例没设置、、
有不对的地方请指出,我及时改正,也欢迎补充。我暂时就研究出了这么点东西。