我想将动态数据集绑定到rdlc。如果我在ASPX文件中使用内联DataSource(静态绑定),我可以查看报告。但是,如果我使用以下代码,报表查看器将继续显示“正在加载...”图像。
我已经检查了数据集名称,如果我将数据集名称更改为“Orders2”,它会显示我没有提供所需的数据集“Orders”。所以,我在表单上添加GridView并测试我的DataSet。数据集包含数据并与GridView一起显示。
问题仅出在报告中,我无法动态地将数据绑定到ReportViewer。请帮我。感谢。
protected void Page_Load(object sender, EventArgs e)
{
DataSet ds = GetDataSet();
ReportDataSource rds = new ReportDataSource("Orders", ds.Tables[0]);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();
GridView1.DataSource = ds;
GridView1.DataBind();
}
private DataSet GetDataSet()
{
var conString = ConfigurationManager.ConnectionStrings["dotnetConnectionString"];
string strConnString = conString.ConnectionString;
SqlConnection conn = new SqlConnection(strConnString);
conn.Open();
string sql = "Select * FROM Orders";
SqlDataAdapter ad = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
ad.Fill(ds);
return ds;
}
ASPX代码如下:
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="600px" Width="800px">
<LocalReport ReportPath="Reports\Report.rdlc">
<DataSources>
<rsweb:ReportDataSource />
</DataSources>
</LocalReport>
</rsweb:ReportViewer>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
答案 0 :(得分:3)
我已经解决了我的问题。
问题是您需要在IsPostBack包装下添加代码。
if (!Page.IsPostBack)
{
//your binding codes here
}
答案 1 :(得分:1)
在Pade_load事件中,添加此代码
ReportViewer1.LocalReport.ReportPath = Server.MapPath("\\Reports\\Report.rdlc");
this.ReportViewer1.Width = 800;
this.ReportViewer1.Height = 600;