至于水晶报表的一些定义之类的东西,在这就不说了,在google、baidu上有很多,直接进入正题吧。
往往在做报表的时候,不是拽出来的每一字段都是合适每一个客户的电脑的,也就是报表内容整体偏向左或偏向右,这些可能性都是存在的。如果每一次都要因为这改来改去,等于做许多无用功。
//实例化报表
CryTCL crystal =new CryTCL();
//登录信息
crystal.SetDatabaseLogon(clsConn.DATABASE_LOG ,clsConn.DATABASE_IPPASSWPRD,clsConn.DATABASE_ADDRESS,clsConn.DATABASE_NAME );
//绑定数据源(datatable)
crystal.SetDataSource(this.crydDs( this.sqlwhere ).Tables[0]);
//调用动态的字段方法
setLocal(crystal);
this.cryViewTCL.ReportSource = crystal ;
this.cryViewTCL.Refresh();
/// <summary>
/// 给水晶报表字段的属性传参数
/// </summary>
/// <param name="report"></param>
private void setLocal(CrystalDecisions.CrystalReports.Engine.ReportDocument report )
{
//水平
for(int m= 1;m< 74;m++) //m< 74 --> 报表的字段数
{
FieldObject fobj = (FieldObject)report.ReportDefinition.ReportObjects["Field"+m];
//1厘米=566.6666 缇,这里我是通过配置文件来取值的,这个可以根据每个人所喜欢来做
//0.1 * Convert.ToInt32(clsIO.GetKeyValue("leftToMiddle"))表示毫米=厘米*0.1
Double left = fobj.Left + 0.1 * Convert.ToDouble(clsIO.GetKeyValue("leftToMiddle")) * 566.6666 ;
fobj.Left = Convert.ToInt32(left);
}
//坚直
for(int m= 1;m< 74;m++)
{
FieldObject fobj = (FieldObject)report.ReportDefinition.ReportObjects["Field"+m];
//Double left ;
Double top = fobj.Top + 0.1 * Convert.ToDouble(clsIO.GetKeyValue("topToMiddle")) * 566.6666 ;
fobj.Top = Convert.ToInt32(top);
}
}
如果有什么写得不对的,请各位多多指教。谢谢
往往在做报表的时候,不是拽出来的每一字段都是合适每一个客户的电脑的,也就是报表内容整体偏向左或偏向右,这些可能性都是存在的。如果每一次都要因为这改来改去,等于做许多无用功。
//实例化报表
CryTCL crystal =new CryTCL();
//登录信息
crystal.SetDatabaseLogon(clsConn.DATABASE_LOG ,clsConn.DATABASE_IPPASSWPRD,clsConn.DATABASE_ADDRESS,clsConn.DATABASE_NAME );
//绑定数据源(datatable)
crystal.SetDataSource(this.crydDs( this.sqlwhere ).Tables[0]);
//调用动态的字段方法
setLocal(crystal);
this.cryViewTCL.ReportSource = crystal ;
this.cryViewTCL.Refresh();
/// <summary>
/// 给水晶报表字段的属性传参数
/// </summary>
/// <param name="report"></param>
private void setLocal(CrystalDecisions.CrystalReports.Engine.ReportDocument report )
{
//水平
for(int m= 1;m< 74;m++) //m< 74 --> 报表的字段数
{
FieldObject fobj = (FieldObject)report.ReportDefinition.ReportObjects["Field"+m];
//1厘米=566.6666 缇,这里我是通过配置文件来取值的,这个可以根据每个人所喜欢来做
//0.1 * Convert.ToInt32(clsIO.GetKeyValue("leftToMiddle"))表示毫米=厘米*0.1
Double left = fobj.Left + 0.1 * Convert.ToDouble(clsIO.GetKeyValue("leftToMiddle")) * 566.6666 ;
fobj.Left = Convert.ToInt32(left);
}
//坚直
for(int m= 1;m< 74;m++)
{
FieldObject fobj = (FieldObject)report.ReportDefinition.ReportObjects["Field"+m];
//Double left ;
Double top = fobj.Top + 0.1 * Convert.ToDouble(clsIO.GetKeyValue("topToMiddle")) * 566.6666 ;
fobj.Top = Convert.ToInt32(top);
}
}
如果有什么写得不对的,请各位多多指教。谢谢