zoukankan      html  css  js  c++  java
  • grid++json页面数据传入

    最近遇到一个问题,就是要用Grid++做页面数据报表打印,但是翻了Grid++文档就是没有直接从页面上传数据的,都是要加载txt文档,填写txt文档的url。自己尝试直接页面上传JSON数据到Grid++控件中,竟然成功了,分享一下。

    静态框赋值Report.ParameterByName("ProductName").AsString="";

    1.html页面代码如下:

    <html>
    
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>会员资料报表</title>
            <!--<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>-->
            <script src="CreateControl.js" type="text/javascript"></script>
            <script type="text/javascript">
                function window_onload() {
                    var Data = "{"Detail": [" +
                        "{"ProductID": 2,"ProductName": "牛奶","UnitPrice": 15.2,"Quantity": 20,"Amount": 304}," +
                        "{"ProductID": 16,"ProductName": "饼干","UnitPrice": 13.9,"Quantity": 35,"Amount": 486.5}," +
                        "{"ProductID": 36,"ProductName": "鱿鱼","UnitPrice": 15.2,"Quantity": 25,"Amount": 380}," +
                        "{"ProductID": 59,"ProductName": "苏澳奶酪","UnitPrice": 44,"Quantity": 30,"Amount": 1320}" +
                        "]}";
                    var d = JSON.parse(Data);
                    ReportViewer.Stop();
    
                    var Report = ReportViewer.Report;
                    var Recordset = Report.DetailGrid.Recordset;
                    Report.PrepareLoadData();
                    for(var i = 0; i < d.Detail.length; i++) {
                        Recordset.Append();
                        Report.FieldByName("C1").AsString = d.Detail[i].ProductID;
                        Report.FieldByName("C2").AsString = d.Detail[i].ProductName;
                        Report.FieldByName("C3").AsString = d.Detail[i].UnitPrice;
                        Report.FieldByName("C4").AsString = d.Detail[i].Quantity;
                        Report.FieldByName("C5").AsString = d.Detail[i].Amount;
                        Recordset.Post();
                    }
    
                    ReportViewer.Start();
                }
            </script>
        </head>
    
        <body onload="window_onload()">
            <script type="text/javascript">
                CreatePrintViewerEx("100%", "100%", "www.grf", "", true, "");
            </script>
        </body>
    
    </html>

    2.Grid++文件代码如下,txt保存改后缀为grf就可以:

    {
        "Version":"6.3.0.1",
        "Font":{
            "Name":"宋体",
            "Size":90000,
            "Weight":400,
            "Charset":134
        },
        "Printer":{
        },
        "DetailGrid":{
            "Recordset":{
                "Field":[
                    {
                        "Name":"C1"
                    },
                    {
                        "Name":"C2"
                    },
                    {
                        "Name":"C3"
                    },
                    {
                        "Name":"C4"
                    },
                    {
                        "Name":"C5"
                    }
                ]
            },
            "Column":[
                {
                    "Name":"Column1",
                    "Width":2.38
                },
                {
                    "Name":"Column2",
                    "Width":2.38
                },
                {
                    "Name":"Column3",
                    "Width":2.38
                },
                {
                    "Name":"Column4",
                    "Width":2.38
                },
                {
                    "Name":"Column5",
                    "Width":2.38
                }
            ],
            "ColumnContent":{
                "Height":0.508,
                "ColumnContentCell":[
                    {
                        "Column":"Column1",
                        "DataField":"C1"
                    },
                    {
                        "Column":"Column2",
                        "DataField":"C2"
                    },
                    {
                        "Column":"Column3",
                        "DataField":"C3"
                    },
                    {
                        "Column":"Column4",
                        "DataField":"C4"
                    },
                    {
                        "Column":"Column5",
                        "DataField":"C5"
                    }
                ]
            },
            "ColumnTitle":{
                "Height":0.508,
                "ColumnTitleCell":[
                    {
                        "GroupTitle":false,
                        "Column":"Column1",
                        "TextAlign":"MiddleCenter",
                        "Text":"ProductID"
                    },
                    {
                        "GroupTitle":false,
                        "Column":"Column2",
                        "TextAlign":"MiddleCenter",
                        "Text":"ProductName"
                    },
                    {
                        "GroupTitle":false,
                        "Column":"Column3",
                        "TextAlign":"MiddleCenter",
                        "Text":"UnitPrice"
                    },
                    {
                        "GroupTitle":false,
                        "Column":"Column4",
                        "TextAlign":"MiddleCenter",
                        "Text":"Quantity"
                    },
                    {
                        "GroupTitle":false,
                        "Column":"Column5",
                        "TextAlign":"MiddleCenter",
                        "Text":"Amount"
                    }
                ]
            }
        },
        "Parameter":[
            {
                "Name":"ProductID"
            },
            {
                "Name":"ProductName"
            },
            {
                "Name":"UnitPrice"
            },
            {
                "Name":"Quantity"
            },
            {
                "Name":"Amount"
            }
        ],
        "ReportHeader":[
            {
                "Name":"ReportHeader1",
                "Height":1.05833,
                "Control":[
                    {
                        "Type":"StaticBox",
                        "Name":"StaticBox1",
                        "Left":5.79967,
                        "Top":0.1905,
                        "Width":2.794,
                        "Height":0.804333,
                        "Font":{
                            "Name":"宋体",
                            "Size":156000,
                            "Weight":400,
                            "Charset":134
                        },
                        "Text":"会员集料"
                    }
                ]
            }
        ]
    }

     注意:grf文件中要赋值字段必须和js赋值一样多,不然就会报错显示不出来。

    如果直接传入 json格式的话,加载数据用 ReportViewer.Report.LoadDataFromXML(jsonstr);

    ReportViewer.Stop(); 

    ReportViewer.Report.LoadDataFromXML(jsonstr);

    //启动报表运行
    ReportViewer.Start();

    若jsonstr中用到动态加载的数据(记录集)那上述加载的不显示记录集,但是若是生成txt文件加载能显示记录集。不知道是什么什么原因引起的?

  • 相关阅读:
    AJAX异步传输——以php文件传输为例
    js控制json生成菜单——自制菜单(一)
    vs2010中关于HTML控件与服务器控件分别和js函数混合使用的问题
    SQL数据库连接到服务器出错——无法连接到XXX
    PHP错误:Namespace declaration statement has to be the very first statement in the script
    【LeetCode】19. Remove Nth Node From End of List
    【LeetCode】14. Longest Common Prefix
    【LeetCode】38. Count and Say
    【LeetCode】242. Valid Anagram
    【LeetCode】387. First Unique Character in a String
  • 原文地址:https://www.cnblogs.com/feipengting/p/9975128.html
Copyright © 2011-2022 走看看