[英]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.