<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<HEAD>
<TITLE>Web报表(B/S报表)演示 - 用程序定义报表模板</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<script src="../CreateControl.js" language="javascript"></script>
<script src="../GRUtility.js" language="javascript"></script>
<script language="javascript" type="text/javascript">
// <!CDATA[
var Report;
function window_onload() {
Report = ReportViewer.Report;
//通过程序代码定义报表模板
//<<
Report.Clear();
//定义报表主对象的属性
Report.Font.Point = 9;
//定义页眉
DefinePageHeader();
//定义页脚
DefinePageFooter();
//定义报表头
DefineReportHeader();
//定义报表尾
DefineReportFooter();
//定义明细网格
DefineDetailGrid();
//>>
//如果要检查定义的模板,可以保存到文件,然后用报表设计器打开查看
Report.SaveToFile("d:\\Program.grf");
//启动报表运行
ReportViewer.Start();
}
function DefinePageHeader() {
Report.InsertPageHeader();
Report.PageHeader.Height = 0.58;
//插入一个部件框
var StaticBox = Report.PageHeader.Controls.Add(1).AsStaticBox; //GRControlType.grctStaticBox
StaticBox.Text = "欢迎访问:www.GridppReport.com,了解最新产品信息";
StaticBox.ForeColor = ColorFromRGB(0, 0, 255); //Red = 0, Green = 0, Blue = 255
StaticBox.Left = 0;
StaticBox.Top = 0;
StaticBox.Width = 8.20;
StaticBox.Height = 0.58;
//插入另一个部件框
StaticBox = Report.PageHeader.Controls.Add(1).AsStaticBox; //GRControlType.grctStaticBox
StaticBox.Text = "Grid++Report 示例";
StaticBox.Font.Point = 11;
StaticBox.Font.Bold = true;
StaticBox.Dock = 3; //GRDockStyle.grdsRight 使其锚定到页眉的右端
StaticBox.TextAlign = 36; //GRTextAlign.grtaMiddleRight 使文本对齐到右端
StaticBox.Width = 6;
}
function DefinePageFooter()
{
Report.InsertPageFooter();
Report.PageFooter.Height = 0.58;
//插入一个系统变量框,显示页号
var PageNoBox = Report.PageFooter.Controls.Add(3).AsSystemVarBox; //GRControlType.grctSystemVarBox
PageNoBox.SystemVar = 3; //GRSystemVarType.grsvPageNumber
PageNoBox.TextAlign = 36; //GRTextAlign.grtaMiddleRight
PageNoBox.Left = 12.78;
PageNoBox.Top = 0;
PageNoBox.Width = 1.40;
PageNoBox.Height = 0.40;
//插入一个静态文本框,显示页号与总页数中间的分隔斜线字符'/'
var StaticBox = Report.PageFooter.Controls.Add(1).AsStaticBox; //GRControlType.grctStaticBox
StaticBox.Text = "/";
StaticBox.TextAlign = 36; //GRTextAlign.grtaMiddleCenter
StaticBox.Left = 14.18;
StaticBox.Top = 0;
StaticBox.Width = 0.40;
StaticBox.Height = 0.40;
//插入另一个系统变量框,显示页数
var PageCountBox = Report.PageFooter.Controls.Add(3).AsSystemVarBox; //GRControlType.grctSystemVarBox
PageCountBox.SystemVar = 2; //GRSystemVarType.grsvPageCount
PageCountBox.Left = 14.58;
PageCountBox.Top = 0;
PageCountBox.Width = 1.40;
PageCountBox.Height = 0.40;
}
function DefineReportHeader()
{
var Reportheader = Report.InsertReportHeader();
Reportheader.Height = 1.38;
//插入一个静态文本框,显示报表标题文字
var StaticBox = Reportheader.Controls.Add(1).AsStaticBox; //GRControlType.grctStaticBox
StaticBox.Text = "按单统计销售明细报表";
StaticBox.Center = 1; //GRCenterStyle.grcsHorizontal 使部件框在节中水平方向上居中对齐
StaticBox.Font.Point = 15;
StaticBox.Font.Bold = true;
StaticBox.Top = 0.40;
StaticBox.Width = 5.64;
StaticBox.Height = 0.58;
}
function DefineReportFooter()
{
}
function DefineDetailGrid()
{
Report.InsertDetailGrid();
Report.DetailGrid.ColumnTitle.Height = 0.58*2;
Report.DetailGrid.ColumnContent.Height = 0.58;
//Red = 255, Green = 196, Blue = 196
Report.DetailGrid.ColumnContent.AlternatingBackColor = ColorFromRGB(196, 196, 255);
//定义数据集的各个字段
var RecordSet = Report.DetailGrid.Recordset;
RecordSet.AddField("OrderID", 2); //GRFieldType.grftInteger
RecordSet.AddField("CustomerID", 1); //GRFieldType.grftString
RecordSet.AddField("CompanyName", 1); //GRFieldType.grftString
RecordSet.AddField("OrderDate", 6).Format = "yyyy年MM月dd日"; //GRFieldType.grftDateTime
RecordSet.AddField("Freight", 3).Format = "$#,##0.00"; //GRFieldType.grftFloat
RecordSet.AddField("ProductID", 2); //GRFieldType.grftInteger
RecordSet.AddField("ProductName", 1); //GRFieldType.grftString
RecordSet.AddField("UnitPrice", 3).Format = "#,##0.##"; //GRFieldType.grftFloat
RecordSet.AddField("Quantity", 2).Format = "#,##0.##"; //GRFieldType.grftInteger
RecordSet.AddField("Discount", 3).Format = "0.00%"; //GRFieldType.grftFloat
RecordSet.AddField("Amount", 3).Format = "$#,##0.00"; //GRFieldType.grftFloat
RecordSet.AddField("DiscountAmt", 3).Format = "$#,##0.00"; //GRFieldType.grftFloat
RecordSet.AddField("NetAmount", 3).Format = "$#,##0.00"; //GRFieldType.grftFloat
//定义列
Report.DetailGrid.AddColumn("ProductName", "产品名称", "ProductName", 2.78);
Report.DetailGrid.AddColumn("UnitPrice", "单价", "UnitPrice", 1.98);
Report.DetailGrid.AddColumn("Quantity", "数量", "Quantity", 1.59);
Report.DetailGrid.AddColumn("Discount", "折扣", "Discount", 1.80);
Report.DetailGrid.AddColumn("Amount", "折扣前金额", "Amount", 2.38);
Report.DetailGrid.AddColumn("DiscountAmt", "折扣金额", "DiscountAmt", 2.38);
Report.DetailGrid.AddColumn("NetAmount", "折扣后金额", "NetAmount", 2.38);
//<<定义双层表头
//定义第一个标题组,包括列ProductName、UnitPrice
var ColumnTitleCell1 = Report.DetailGrid.AddGroupTitle("ProductTitleGroup", "产品信息");
ColumnTitleCell1.TextAlign = 34; //GRTextAlign.grtaMiddleCenter
ColumnTitleCell1.EncloseColumn("ProductName");
ColumnTitleCell1.EncloseColumn("UnitPrice");
//这两个列不在标题组中,将其顺序移到最后
Report.DetailGrid.ColumnMoveToEnd("Quantity");
Report.DetailGrid.ColumnMoveToEnd("Discount");
//定义第二个标题组,包括列Amount、DiscountAmt、NetAmount
var ColumnTitleCell2 = Report.DetailGrid.AddGroupTitle("AmtTitleGroup", "金额信息");
ColumnTitleCell2.TextAlign = 34; //GRTextAlign.grtaMiddleCenter
ColumnTitleCell2.EncloseColumn("Amount");
ColumnTitleCell2.EncloseColumn("DiscountAmt");
ColumnTitleCell2.EncloseColumn("NetAmount");
//>>定义双层表头
//定义分组
var Group = Report.DetailGrid.Groups.Add();
Group.ByFields = "OrderID";
//<<定义分组头
Group.Header.Height = 0.79;
//定义分组头的缺省字体为粗体,其拥有的部件框如没有显示定义字体,则将应用缺省字体
Group.Header.Font.Bold = true;
//定义一个字段框,显示字段OrderID的值
var FieldBox = Group.Header.Controls.Add(4).AsFieldBox; //GRControlType.grctFieldBox
FieldBox.DataField = "OrderID";
FieldBox.Left = 0.40;
FieldBox.Top = 0.19;
FieldBox.Width = 1.59;
FieldBox.Height = 0.40;
//FieldBox.BorderStyles = 1 + 4; //(GRBorderStyles)((int)GRBorderStyles.grbsDrawLeft + (int)GRBorderStyles.grbsDrawRight);
//定义一个字段框,显示字段CompanyName的值
FieldBox = Group.Header.Controls.Add(4).AsFieldBox; //GRControlType.grctFieldBox
FieldBox.DataField = "CompanyName";
FieldBox.Left = 2.59;
FieldBox.Top = 0.19;
FieldBox.Width = 3.60;
FieldBox.Height = 0.40;
//定义一个字段框,显示字段OrderDate的值
FieldBox = Group.Header.Controls.Add(4).AsFieldBox; //GRControlType.grctFieldBox
FieldBox.DataField = "OrderDate";
FieldBox.Left = 7.20;
FieldBox.Top = 0.19;
FieldBox.Width = 2.99;
FieldBox.Height = 0.40;
//定义一个静态文本框
var StaticBox = Group.Header.Controls.Add(1).AsStaticBox; //GRControlType.grctStaticBox
StaticBox.Text = "运费:";
StaticBox.Left = 11.19;
StaticBox.Top = 0.19;
StaticBox.Width = 1.01;
StaticBox.Height = 0.40;
//定义一个字段框,显示字段Freight的值
FieldBox = Group.Header.Controls.Add(4).AsFieldBox; //GRControlType.grctFieldBox
FieldBox.DataField = "Freight";
FieldBox.Left = 12.38;
FieldBox.Top = 0.19;
FieldBox.Width = 2.41;
FieldBox.Height = 0.40;
//>>定义分组头
//<<定义分组尾
Group.Footer.Height = 0.98;
//定义分组尾的缺省字体为粗体,其拥有的部件框如没有显示定义字体,则将应用缺省字体
Group.Footer.Font.Bold = true;
StaticBox = Group.Footer.Controls.Add(1).AsStaticBox; //GRControlType.grctStaticBox
StaticBox.Text = "本单小计";
StaticBox.Left = 0.40;
StaticBox.Top = 0.19;
StaticBox.Width = 2.59;
StaticBox.Height = 0.40;
var SummaryBox = Group.Footer.Controls.Add(5).AsSummaryBox; //GRControlType.grctSummaryBox
SummaryBox.SummaryFun = 1; //GRSummaryFun.grsfSum
SummaryBox.Format = "$#,##0.00";
SummaryBox.DataField = "Amount";
SummaryBox.AlignColumn = "Amount"; //通过对齐到列确定部件框的左边位置与宽度
SummaryBox.Top = 0.19;
SummaryBox.Height = 0.40;
SummaryBox = Group.Footer.Controls.Add(5).AsSummaryBox; //GRControlType.grctSummaryBox
SummaryBox.SummaryFun = 1; //GRSummaryFun.grsfSum
SummaryBox.Format = "$#,##0.00";
SummaryBox.DataField = "DiscountAmt";
SummaryBox.AlignColumn = "DiscountAmt"; //通过对齐到列确定部件框的左边位置与宽度
SummaryBox.Top = 0.19;
SummaryBox.Height = 0.40;
SummaryBox = Group.Footer.Controls.Add(5).AsSummaryBox; //GRControlType.grctSummaryBox
SummaryBox.SummaryFun = 1; //GRSummaryFun.grsfSum
SummaryBox.Format = "$#,##0.00";
SummaryBox.DataField = "NetAmount";
SummaryBox.AlignColumn = "NetAmount"; //通过对齐到列确定部件框的左边位置与宽度
SummaryBox.Top = 0.19;
SummaryBox.Height = 0.40;
//>>定义分组尾
}
// ]]>
</script>
<style type="text/css">
html,body {
margin:0;
height:100%;
}
</style>
</HEAD>
<BODY style="margin:0" onload="return window_onload()">
<script language="javascript">
CreatePrintViewer("", "../data/xmlSaleDetail.aspx")
</script>
</BODY>
</HTML>
转载自:https://www.cnblogs.com/llyfe2006/articles/2852256.html