簡體   English   中英

使用JSON數組創建RDLC報告

[英]Creating RDLC report with JSON array

我正在嘗試為我的項目使用JSON數組創建RDLC報告。 JSON數組來自API。 我已經使用數據庫制作了RDLC報告,因為Dataset直接訪問SQL database ,但是如何處理來自JSON數組的API。

我試圖在無類型數據表上獲取JSON數組,然后將其合並到有類型數據表中。 然后應該顯示在dataset.xsd ,但事實並非如此。

public partial class WebForm2 : System.Web.UI.Page
{
    [WebMethod]
    [System.Web.Script.Services.ScriptMethod()]
    protected void Page_Load(object sender, EventArgs e)
    {
        test();
    }

    public void test()
    {
        WebClient client = new WebClient();
        string strJSON = client.DownloadString("Json.txt");
        string chk = strJSON.Replace("\\", "");
        chk = chk.Substring(1, chk.Length - 2);
        DataTable dtUsingMethod = GetJSONToDataTableUsingNewtonSoftDll(chk);
        DataSet1.test_tableDataTable tbl = new DataSet1.test_tableDataTable();
        tbl.Merge(dtUsingMethod);
    }

    public static DataTable GetJSONToDataTableUsingNewtonSoftDll(string JSONData)
    {
        DataTable dt = (DataTable)JsonConvert.DeserializeObject(JSONData, (typeof(DataTable)));
        return dt;
    }
}

JSON格式如下:

"[{\"plant_sl_no\":\"3451\",\"batch_no\":\"3515\",\"batch_no_sl\":\"0\",\"batch_index\":\"6\",\"batch_date\":\"5\/29\/2019 3:00:00 AM\",\"recp_id\":\"M-30(COLUME)\",\"recp_name\":\"M30\",\"pdt_qty\":\"0.50\",\"truck_id\":\"KA 01 C 9771\",\"cust_id\":\"1\",\"load_sent_qty\":\"15.00\",\"site\":\"PHRE HEATER\",\"Prod1_Agg_Name\":\"10MM\",\"Prod1_Agg_Stwt\":\"260.00\",\"Prod1_Agg_Atwt\":\"270.00\",\"Prod1_Agg_Moi\":\"0.00\",\"Prod2_Agg_Name\":\"R SAND\",\"Prod2_Agg_Stwt\":\"395.00\",\"Prod2_Agg_Atwt\":\"410.00\",\"Prod2_Agg_Moi\":\"0.00\",\"Prod3_Agg_Name\":\"20 MM\",\"Prod3_Agg_Stwt\":\"300.00\",\"Prod3_Agg_Atwt\":\"300.00\",\"Prod3_Agg_Moi\":\"0.00\",\"Prod4_Agg_Name\":\"M SAND\",\"Prod4_Agg_Stwt\":\"0.00\",\"Prod4_Agg_Atwt\":\"0.00\",\"Prod4_Agg_Moi\":\"0.00\",\"Prod5_Agg_Name\":\"0\",\"Prod5_Agg_Stwt\":\"0.00\",\"Prod5_Agg_Atwt\":\"0.00\",\"Prod5_Agg_Moi\":\"0.00\",\"Prod6_Agg_Name\":\"-\",\"Prod6_Agg_Stwt\":\"0.00\",\"Prod6_Agg_Atwt\":\"0.00\",\"Prod6_Agg_Moi\":\"0.00\"},{\"plant_sl_no\":\"3451\",\"batch_no\":\"3515\",\"batch_no_sl\":\"0\",\"batch_index\":\"1\",\"batch_date\":\"5\/29\/2019 3:00:00 AM\",\"recp_id\":\"M-30(COLUME)\",\"recp_name\":\"M30\",\"pdt_qty\":\"0.50\",\"truck_id\":\"KA 01 C 9771\",\"cust_id\":\"1\",\"load_sent_qty\":\"15.00\",\"site\":\"PHRE HEATER\",\"Prod1_Agg_Name\":\"10MM\",\"Prod1_Agg_Stwt\":\"260.00\",\"Prod1_Agg_Atwt\":\"260.00\",\"Prod1_Agg_Moi\":\"0.00\",\"Prod2_Agg_Name\":\"R SAND\",\"Prod2_Agg_Stwt\":\"395.00\",\"Prod2_Agg_Atwt\":\"395.00\",\"Prod2_Agg_Moi\":\"0.00\",\"Prod3_Agg_Name\":\"20 MM\",\"Prod3_Agg_Stwt\":\"300.00\",\"Prod3_Agg_Atwt\":\"300.00\",\"Prod3_Agg_Moi\":\"0.00\",\"Prod4_Agg_Name\":\"M SAND\",\"Prod4_Agg_Stwt\":\"0.00\",\"Prod4_Agg_Atwt\":\"0.00\",\"Prod4_Agg_Moi\":\"0.00\",\"Prod5_Agg_Name\":\"0\",\"Prod5_Agg_Stwt\":\"0.00\",\"Prod5_Agg_Atwt\":\"0.00\",\"Prod5_Agg_Moi\":\"0.00\",\"Prod6_Agg_Name\":\"-\",\"Prod6_Agg_Stwt\":\"0.00\",\"Prod6_Agg_Atwt\":\"0.00\",\"Prod6_Agg_Moi\":\"0.00\"},{\"plant_sl_no\":\"3451\",\"batch_no\":\"3515\",\"batch_no_sl\":\"0\",\"batch_index\":\"2\",\"batch_date\":\"5\/29\/2019 3:00:00 AM\",\"recp_id\":\"M-30(COLUME)\",\"recp_name\":\"M30\",\"pdt_qty\":\"0.50\",\"truck_id\":\"KA 01 C 9771\",\"cust_id\":\"1\",\"load_sent_qty\":\"15.00\",\"site\":\"PHRE HEATER\",\"Prod1_Agg_Name\":\"10MM\",\"Prod1_Agg_Stwt\":\"260.00\",\"Prod1_Agg_Atwt\":\"260.00\",\"Prod1_Agg_Moi\":\"0.00\",\"Prod2_Agg_Name\":\"R SAND\",\"Prod2_Agg_Stwt\":\"395.00\",\"Prod2_Agg_Atwt\":\"395.00\",\"Prod2_Agg_Moi\":\"0.00\",\"Prod3_Agg_Name\":\"20 MM\",\"Prod3_Agg_Stwt\":\"300.00\",\"Prod3_Agg_Atwt\":\"300.00\",\"Prod3_Agg_Moi\":\"0.00\",\"Prod4_Agg_Name\":\"M SAND\",\"Prod4_Agg_Stwt\":\"0.00\",\"Prod4_Agg_Atwt\":\"0.00\",\"Prod4_Agg_Moi\":\"0.00\",\"Prod5_Agg_Name\":\"0\",\"Prod5_Agg_Stwt\":\"0.00\",\"Prod5_Agg_Atwt\":\"0.00\",\"Prod5_Agg_Moi\":\"0.00\",\"Prod6_Agg_Name\":\"-\",\"Prod6_Agg_Stwt\":\"0.00\",\"Prod6_Agg_Atwt\":\"0.00\",\"Prod6_Agg_Moi\":\"0.00\"}]"

預期結果是我想使用JSON數組生成報告。

好的,我找到了一個對我有用的答案。 我希望將其發布在這里,這對其他人也有幫助。 這里的問題是我們需要RDLC報告的數據源。 由於我們無法使用Sql數據庫,因此必須創建自己的自定義數據源。

步驟1.添加一個類文件。

步驟2.在類文件中的代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using System.Text;
using System.Runtime.Serialization.Formatters;
using System.IO;
using System.Data;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using Newtonsoft.Json.Serialization;
using System.Web.Services;
using System.Net;

namespace Batch_report
{
    public class batch_data 
    {
        public string plant_sl_no { get; set; }
        public string batch_no { get; set; }
        public string batch_no_sl { get; set; }
        public string batch_index { get; set; }
        public string batch_date { get; set; }
        public string recp_id { get; set; }
        public string recp_name { get; set; }
        public string pdt_qty { get; set; }
        public string truck_id { get; set; }
        public string cust_id { get; set; }
        public string load_sent_qty { get; set; }
        public string site { get; set; }
    }
    public class Custom_batch
    {
        [WebMethod]
        [System.Web.Script.Services.ScriptMethod()]
        public static List<batch_data> GetEmployeeName()
        {
            //List<string> abc = new List<string>();
            //string[] arr;
            WebClient client = new WebClient();
            string info = client.DownloadString("http://json.txt");
            string chk = info.Replace("\\", "");
            chk = chk.Substring(1, chk.Length - 2);

            List<batch_data> obj = new List<batch_data>();
            obj = JsonConvert.DeserializeObject<List<batch_data>>(chk);

            return obj;
        }
    }
}

步驟3.構建您的類文件,您將獲得batch_report.dll文件。 將此.dll添加到項目的參考文件夾中。

步驟4.從工具箱添加報告或報告向導。 添加后,將打開一個窗口,詢問數據集。 命名您的數據集,然后在數據源中從下拉列表中選擇batch_report。在“可用數據集”中,選擇要從中獲取數據的方法,在我的情況下,該方法來自Custom_batch類,方法是-GetEmployeeName()。

步驟5.單擊“下一步”直到完成,然后您也可以設計報告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM