我正在使用ReportViewer为我的网络应用程序创建一些报告,我想知道:
可以在不预先创建.rdlc文件的情况下使用ReportViewer ... dataSet ...以及所有内容?
我想创建这些对象的实例,在运行时设置他们的属性,不要在我的应用程序中包含太多文件(30个报告x 3个文件[dataSet,.rdlc和.aspx])
以下方法解释了我的一些难点:
protected void Page_Load(object sender,EventArgs e) {
//getting the string connection
string connString = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
//estabilishing connection
using (SqlConnection conn = new SqlConnection(connString))
{
string sql = @"EXEC SP_PRODUCTS"; // or another SQL command
//opening connection
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataTable dte = new DataTable();
//filling the dataTable with the command above
adp.Fill(dte);
//closing connection
conn.Close();
//defining which report the component will render
ReportViewer1.LocalReport.ReportPath = "myReport.rdlc";
//adding the dataSource Adicionando o data source, it's important passing the same name you defined before
//at this moment, i didn't understood if the DataSource is being created populated by the dte datatable or
//if it is just binding the dte datatable to an existing dataSource named "Products
ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("Products", dte));
//without this it wont work
ReportViewer1.DataBind();
}
}
如何解决这个问题? 提前谢谢。
答案 0 :(得分:2)
您必须创建一个rdlc文件,但您可以做的是用您需要的列填充此rdlc,并根据您需要显示/隐藏列。您可以使用参数。这样,您只能使用一个rdlc文件。您还可以为所需的所有列定义一个对象(并只创建一个数据集),然后根据报告填充它。