水晶报表10
这几天一直在做Crystal Reports,终于经过我的不断摸索,已经渐渐熟悉水晶报表了,我以前从来没做过水晶报表,这次算是个尝试把,可惜公司里没人做过没人教我,他们在dotnet中还一直沿用着老的答应报表方式,在asp调用打印。遇到很多问题,上网查了很多资料:
1 支持html代码解析,虽然在Crystal Reports 9中,有Text Interpretation=HTML Text这个属性,不过很遗憾地告诉你,那个是没用的,你的Html代码他只会解析成一堆乱码,后来换了Crystal Reports 10(支持.net 2003,这是序列号:License : AV860-01CS00G-U7000NCSN : 1231467890)终于不再是乱码。不过一些比如table等元素还是解析不出来,不知道Crystal Reports 11有没有解决。
2 界面上的CRYSTALREPORTVIEWER控件不能放在DIV中,否则导出和打印功能是用不了的,这个问题搞我一天,郁闷至极啊
3 报表.SetDataSource(date);这个date要用DataTable填充不能用DataView ,否则是无数据的
4 用Activator.CreateInstance进行反射,c/s和b/s下不同的,c/s只要在同一个命名空间下了,直接通过Type.GetType("类名")就能得到一个Type的类型,而b/s下返回的是null,要用一下这段代码:
private Object GetClass(string pClassName){
AppDomain currentdomain = AppDomain.CurrentDomain;
Assembly[] assems = currentdomain.GetAssemblies();
Type type = null;
for (int j = 0; j < assems.Length; j++)
{
Type[] types = assems[j].GetTypes();
for (int k = 0; k < types.Length; k++)
{
if (types[k].Name.Equals(pClassName) || (types[k].FullName.Equals(pClassName)))
{
type = types[k];
break;
}
}
if (type != null)
{
break;
}
}
if(type!=null)
{
return Activator.CreateInstance(type);
}
return null;
}
现在想想:因为我创建的是网站,不是Application,所以没有命名空间的原因造成的吧