知识在于积累(.NET之路……)

导航

用程序定义报表模板(官方例子)

<!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>

 

posted on 2013-01-09 09:06  汤尼  阅读(1164)  评论(2编辑  收藏  举报