【发布时间】:2017-09-19 13:30:51
【问题描述】:
我已经完成了 Microsoft 的关于使用 SQL Server Reporting Services (SSRS) 的报告创建 Web 应用程序的短期课程 (create-drillthrough-rdlc-report-with-parameters-reportviewer)
在课程中,我创建了报告,允许钻取操作并链接另一个报告(与另一个数据集)。这项工作很好,但出于我的目的,我需要对过程进行更多控制,这就是我创建按钮来执行相同操作的原因。按钮用于从数据库中检索新值并在当前ReportViewer 中显示结果 第一个按钮正在为相同的报告 (Report1) 和数据集 (DataSet1) 执行数据检索,如父级报告。第二个是检索另一个报告 (Report2) 和数据集 (DataSet2) 的数据。
代码几乎相同,在教程的标准钻取操作期间执行,但点击第二个按钮 (toReport2) 不会显示任何结果。我不知道这里有什么问题。 我已经检查了数据表的结果——它们是存在的并且与数据集匹配。 浏览 WEB 中的类似帖子并没有真正的帮助。请帮我解决这个问题。
protected void DataSet1Button_Click(object sender, EventArgs e)
{
this.ReportViewer1.Reset();
this.ReportViewer1.ProcessingMode = ProcessingMode.Local;
this.ReportViewer1.LocalReport.DataSources.Clear();
DataTable dt1 = getDataSet1Data();
ReportDataSource datasource = new ReportDataSource("DataSet1", dt1);
this.ReportViewer1.LocalReport.DataSources.Add(datasource);
this.ReportViewer1.LocalReport.ReportPath = (@"...mypath...\MyApp7\Report1.rdlc");
this.ReportViewer1.LocalReport.Refresh();
this.ReportViewer1.Visible = true;
}
protected void DataSet2Button_Click(object sender, EventArgs e)
{
this.ReportViewer1.Reset();
this.ReportViewer1.ProcessingMode = ProcessingMode.Local;
this.ReportViewer1.LocalReport.DataSources.Clear();
DataTable dt2 = getDataSet2Data();
ReportDataSource datasource2 = new ReportDataSource("DataSet2", dt2);
this.ReportViewer1.LocalReport.DataSources.Add(datasource2);
this.ReportViewer1.LocalReport.ReportPath = (@"...mypath...\MyApp7\Report2.rdlc");
this.ReportViewer1.LocalReport.Refresh();
this.ReportViewer1.Visible = true;
}
public DataTable getDataSet1Data()
{
string constring = "Data Source = x.x.x.x; Initial Catalog = Adventureworks2014; Integrated Security = SSPI";
using (SqlConnection sqlconn = new SqlConnection(constring))
{
string commandText = "SELECT ProductID, Name, ProductNumber, MakeFlag, FinishedGoodsFlag, Color, SafetyStockLevel, ReorderPoint, StandardCost, ListPrice, Size, SizeUnitMeasureCode, WeightUnitMeasureCode, Weight, DaysToManufacture, ProductLine, Class, Style, ProductSubcategoryID, ProductModelID, SellStartDate, SellEndDate, DiscontinuedDate, rowguid, ModifiedDate FROM Production.Product";
using (SqlCommand sqlcomm = new SqlCommand(commandText, sqlconn))
{
using (SqlDataAdapter sqladap = new SqlDataAdapter(sqlcomm))
{
using (DataSet1 dset1 = new DataSet1())
{
sqladap.Fill(dset1, dset1.Product.TableName);
return dset1.Product;
}
}
}
}
}
public DataTable getDataSet2Data()
{
string constring = "Data Source = x.x.x.x; Initial Catalog = Adventureworks2014; Integrated Security = SSPI";
using (SqlConnection sqlconn = new SqlConnection(constring))
{
string commandText = "SELECT PurchaseOrderID, PurchaseOrderDetailID, OrderQty, ProductID, ReceivedQty, RejectedQty, StockedQty FROM Purchasing.PurchaseOrderDetail";
using (SqlCommand sqlcomm = new SqlCommand(commandText, sqlconn))
{
using (SqlDataAdapter sqladap = new SqlDataAdapter(sqlcomm))
{
using (DataSet2 dset2 = new DataSet2())
{
sqladap.Fill(dset2, dset2.PurchaseOrderDetail.TableName);
return dset2.PurchaseOrderDetail;
}
}
}
}
【问题讨论】:
-
我在代码中没有发现任何奇怪的地方。如果您在 toReport1 之前单击 toReport2 是否有效?点击两次toReport1是否有效?
-
那是你写的根本不是一个解决方案,但是通过说,那个代码很好,我意识到我正在寻找不好的区域。我需要更改参数设置。感谢 tezzo 的帮助!
标签: c# reporting-services