ar14 如何绑定多数据源或者多数据集
本帖最后由 Lenka.Guo 于 2020-4-28 10:16 编辑ar14 如何绑定多数据源或者多数据集?
尤其Startup里应如何对应呢?
如果返回C# Dataset, 包含多个Datatable表, 如何与报表的数据集一一对应
按下图的方式报错,
您好
如上午沟通,问题重现,了解实现需求返回多个 DataTable的。所以建议走以下代码: app.UseReporting(settings =>
{
settings.UseFileStore(new DirectoryInfo(@"D:\Demo"));
settings.LocateDataSource = args =>
{
DataSet customerOrders = new DataSet("DataSource1");
DataTable dt = new DataTable("Test");
dt.Columns.Add("Field1");
dt.Columns.Add("Field2");
dt.Rows.Add("1", "苹果");
dt.Rows.Add("2", "葡萄");
dt.Rows.Add("3", "葡萄11");
DataTable dt2 = new DataTable("Test2");
dt2.Columns.Add("Field1");
dt2.Columns.Add("Field2");
dt2.Rows.Add("01", "苹果");
dt2.Rows.Add("02", "葡萄");
dt2.Rows.Add("03", "葡萄11");
customerOrders.Tables.Add(dt);
customerOrders.Tables.Add(dt2);
if (args.DataSet.Name == "DataSet1")
return customerOrders.Tables;
if (args.DataSet.Name == "DataSet2")
return customerOrders.Tables;
return customerOrders.Tables;
};
settings.UseCompression = true;
});
根据您描述的意思:
在LocateDataSource 方法中要返回的是一个DataSet 而不是 DataTable。 是吗?
如果返回的是 DataSet,您在代码中不需要做任何设置,要返回包含数据的 rptDS;
然后 再 报表设计器中,添加对应字段后, 在’查询‘ 选项卡中输入 DataTable的名称,直接点击确定即可。
1. Startup 里返回的 Dataset 中的每一个表是否要命名?
如: DataSet ds = bll.inqTestSubDs(reportPara, reportPara, reportPara);
ds.Tables.TableName = "rptMain";
ds.Tables.TableName = "rptSub";
2.报表--数据集--》查询--》 写查询语句还是写表名?
无论怎么写都会提示报错, 而且最后报表还是报错 我这边制作一个示例给您发过去吧,制作示例需要2-4小时,制作完成后给您发送。请您耐心等待下。 您好
按照以下步骤:
1. 在 Startup.cs 中实现以下代码:
app.UseReporting(settings =>
{
settings.UseFileStore(new DirectoryInfo(@"D:\Demo"));
settings.LocateDataSource = args =>
{
DataSet customerOrders = new DataSet("DataSource1");
DataTable dt = new DataTable("Test");
if (args.DataSet.Query.DataSourceName == "DataSource1")
{
if (args.DataSet.Name == "DataSet1")
{
dt.Columns.Add("Field1");
dt.Columns.Add("Field2");
dt.Rows.Add("1", "苹果");
dt.Rows.Add("2", "葡萄");
dt.Rows.Add("3", "葡萄11");
}
}
customerOrders.Tables.Add(dt);
return customerOrders;
};
settings.UseCompression = true;
});
2. 修改报表
设置数据源为 DataSet Provider
3. 添加数据集
字段中添加要返回的字段,注意名称要与 代码中的名称匹配:
4. 在数据集【查询】输入 DataTable名称,注意名称要与 Startup中的Table名称一致,否则会无法找到该Table.
点击确定,确定可能会报错,请忽略后,继续点击确定即可关闭窗口。保存报表。
示例如附件,因为论坛 Demo限制,我删除了 Packges和dll文件,所以您可能无法直接运行。需要还原Nuget包
页:
[1]
2