Web端报表设计器如何绑定动态数据源
本帖最后由 KearneyKang 于 2020-4-8 16:26 编辑Web端报表设计器给大家提供了一个网页端在线编辑的功能,除此之外Web报表设计器可以直接进行数据库的链接也可以进行动态数据源绑定,前面就如何直接连接数据库进行了一个讲解,现在主要讲解,如何进行动态数据源的绑定。
操作步骤如下:
1、 首先使用VS打开我们的Web端报表设计器。Web端报表设计器的存储路径如下:
2、 在控制层DataSetsController 里进行一个数据源名称和数据集字段的设置,说的简单点就是创建表结构,表的命名,表对应的字段名称。实现代码: public ActionResult GetDataSetContent(string id)
{
DataSet data1= returndata();
ArData XmlJsonData = new ArData();
XmlJsonData.DataSet = new ArDataSet();
XmlJsonData.DataSet.Name = "DataSet1";
XmlJsonData.DataSet.Query = new ArQuery();
XmlJsonData.DataSet.Query.DataSourceName = "DataSource1";
XmlJsonData.DataSet.Fields = new ArField.Columns.Count];
foreach (DataColumn drc in data1.Tables.Columns)
{
XmlJsonData.DataSet.Fields = new ArField(drc.ColumnName, drc.ColumnName, drc.Caption);
}
XmlJsonData.DataSource = new ArDataSource();
XmlJsonData.DataSource.Name = "DataSource1";
XmlJsonData.DataSource.ConnectionProperties = new ArConnectionProperties();
XmlJsonData.DataSource.ConnectionProperties.DataProvider = "DATASET";
string dataSet = JsonHelper.ObjTranJson(XmlJsonData);
return new ContentResult { Content = dataSet, ContentType = "application/json" };
}
public DataSet returndata()
{
DataTabledt = new DataTable();
dt.Columns.Add("产品编号");
dt.Columns.Add("产品名称");
dt.Columns.Add("单价");
dt.Columns.Add("库存量");
dt.Columns.Add("产地");
dt.Rows.Add("A001", "苹果", 10, 300, "中国");
dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
dt.Rows.Add("A005", "荔枝", 20, 200, "中国");
dt.Rows.Add("A006", "芒果", 30, 400, "中国");
dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");
dt.Rows.Add("A008", "柠檬", 210, 200, "中国");
dt.Rows.Add("A009", "栗子", 320, 400, "中国");
dt.Rows.Add("A010", "火龙果", 100, 300, "中国");
dt.Rows.Add("A011", "青芒", 250, 200, "中国");
dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");
dt.Rows.Add("A013", "土豆", 380, 400, "中国");
dt.Rows.Add("A014", "苹果", 110, 300, "中国");
dt.Rows.Add("A015", "葡萄", 420, 200, "中国");
dt.Rows.Add("A016", "香蕉", 530, 400, "中国");
dt.Rows.Add("A017", "土豆", 380, 400, "中国");
dt.Rows.Add("A018", "苹果", 110, 300, "中国");
dt.Rows.Add("A019", "葡萄", 420, 200, "中国");
dt.Rows.Add("A020", "香蕉", 530, 400, "中国");
dt.Rows.Add("A021", "苹果", 10, 300, "中国");
dt.Rows.Add("A022", "葡萄", 20, 200, "中国");
dt.Rows.Add("A023", "香蕉", 30, 400, "中国");
dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");
dt.Rows.Add("A025", "荔枝", 20, 200, "中国");
dt.Rows.Add("A026", "芒果", 30, 400, "中国");
DataSet temp = new DataSet();
temp.Tables.Add(dt);
return temp;
}
public ActionResult GetDataSetsList()
{
var dataSetsService = HttpContext.GetServiceFromContext<IDataSetsService>();
//var dataSetsList = dataSetsService.GetDataSetsList();
//return Json(dataSetsList, JsonRequestBehavior.AllowGet);
return Json(new object[] { new { Id ="test", Name = "添加数据" } }, JsonRequestBehavior.AllowGet);
}
3、 创建好的报表进行对应的数据绑定,数据绑定这块需要在这个Startup.cs里进行一个对应的动态数据源的绑定,不然就会出先报表预览的时候没有任何数据的情况,并且还会报错。主要实现代码: app.UseReporting(config =>
{
config.UseFileStore(ResourcesRootDirectory);
config.LocateDataSource = args =>
{
DataSetsController TemCon = new DataSetsController();
DataSet data1 = TemCon.returndata();
return data1;
};
});
4、 这样基本上一个动态数据源绑定就完成了,下面我们来看看具体的运行样式
5、 运行截图:
6、如果还想再web端报表设计器中添加多数据源和多数据集,你可以进行如下的操作修改该方法,在里面添加多个数据集,如下
public ActionResult GetDataSetsList()
{
var dataSetsService = HttpContext.GetServiceFromContext<IDataSetsService>();
return Json(new object[] { new { Id = "Test", Name = "添加数据" }, new { Id = "Test1", Name = "添加数据1" } }, JsonRequestBehavior.AllowGet);
}7、运行的时候效果图如下:
8、选择一个对应的数据集进行添加,然后后端代码根据数据集命名进行判断,进行一个对应的数据源数据集的命名
public ActionResult GetDataSetContent(string id)//根据不同的ID进行一个对应的判断。判断语句就自由发挥了
{
DataSet data1 = returndata();
ArData XmlJsonData = new ArData();
XmlJsonData.DataSet = new ArDataSet();
XmlJsonData.DataSet.Name = "DataSet1";
XmlJsonData.DataSet.Query = new ArQuery();
XmlJsonData.DataSet.Query.DataSourceName = "DataSource1";
XmlJsonData.DataSet.Fields = new ArField.Columns.Count];
foreach (DataColumn drc in data1.Tables.Columns)
{
XmlJsonData.DataSet.Fields = new ArField(drc.ColumnName, drc.ColumnName, drc.Caption);
}
XmlJsonData.DataSource = new ArDataSource();
XmlJsonData.DataSource.Name = "DataSource1";
XmlJsonData.DataSource.ConnectionProperties = new ArConnectionProperties();
XmlJsonData.DataSource.ConnectionProperties.DataProvider = "DATASET";
string dataSet = JsonHelper.ObjTranJson(XmlJsonData);
return new ContentResult { Content = dataSet, ContentType = "application/json" };
}9、这样一个多数据绑定就基本完成了
SylvestreLee 发表于 2022-5-7 09:18
https://gcdn.grapecity.com.cn/showtopic-146373-1-1.html 已经发好了
收到,咱们在新贴上进行交流哦~ 请问XmlJsonData.DataSet.Query.CommandText和XmlJsonData.DataSource.ConnectionProperties.ConnectString需要赋值吗?对应的值是什么? 你具体想实现什么需求,是想给报表绑定XML的动态数据源还是。如果是想给报表绑定一个XML的动态数据源的话,后台直接进行一个XML数据的转换进行,转换为一个对应Datatable和Dataset或者object的类型
我想咨询一下,就是如何在.net core mvc项目中在后台提供多数据集呢? .Net Core跟 .Net 平台的写法其实是一样的。你说的提供多数据集,是想在后台代码段绑定通过代码绑定多个数据源数据集,还是 KearneyKang 发表于 2019-4-28 12:10
你具体想实现什么需求,是想给报表绑定XML的动态数据源还是。如果是想给报表绑定一个XML的动态数据源的话, ...
请问一下,我可以使用.Net 版的AR 实现报表设计+动态数据填充吗?
具体需求是:
1,通过代码给报表设计器预置数据源和数据集,以便实施人员配置现场的打印模板。
2,通过代码实现设计好的报表的动态数据填充。 SylvestreLee 发表于 2022-4-28 10:04
请问一下,我可以使用.Net 版的AR 实现报表设计+动态数据填充吗?
具体需求是:
1,通过代码给报表设 ...
可以实现的,具体您可以单独在求助中心发个帖子,我给您相关的实现方法 James.Lv 发表于 2022-4-28 18:14
可以实现的,具体您可以单独在求助中心发个帖子,我给您相关的实现方法
:lol 好的谢谢我去发 SylvestreLee 发表于 2022-5-7 09:14
好的谢谢我去发
{:5_108:} Bella.Yuan 发表于 2022-5-7 09:16
https://gcdn.grapecity.com.cn/showtopic-146373-1-1.html 已经发好了:lol
页:
[1]
2