我使用的是ASP.NET,SQL,水晶报告。我已经成功地生成了单页报告。但是,当报表大小超过一页时,水晶报表只显示第一页数据。当我单击“下一步”按钮时,它会显示“源空或没有找到源”类似的消息。
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim rptDoc As New ReportDocument
Dim ds As New StudentDataSet
Dim sqlCon As SqlConnection
Dim dt As New DataTable
dt.TableName = "Crystal Report Example"
sqlCon = New SqlConnection(myCon)
Dim da As New SqlDataAdapter("select * from tblStudent", sqlCon)
da.Fill(dt)
ds.Tables(0).Merge(dt)
rptDoc.Load(Server.MapPath("~\Reports\StudentList.rpt"))
rptDoc.SetDataSource(ds)
CrystalReportViewer1.ReportSource = rptDoc
End Sub
发布于 2015-01-14 03:35:37
加载报表的代码必须在每个回发上执行。
Page_Init是您可以放置此代码的正确位置(Page_Load可能导致一些错误)。
尝试此更改(对于VB错误,我使用C#):
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ButtonClicked = true
ShowReport()
Protected void Page_Init(object sender, EventArgs e)
ShowReport()
Protected Sub ShowReport()
Dim rptDoc As New ReportDocument
Dim ds As New StudentDataSet
Dim sqlCon As SqlConnection
Dim dt As New DataTable
dt.TableName = "Crystal Report Example"
sqlCon = New SqlConnection(myCon)
Dim da As New SqlDataAdapter("select * from tblStudent", sqlCon)
da.Fill(dt)
ds.Tables(0).Merge(dt)
rptDoc.Load(Server.MapPath("~\Reports\StudentList.rpt"))
rptDoc.SetDataSource(ds)
CrystalReportViewer1.ReportSource = rptDoc
End Sub
嘿,在每次卸载页面时都会关闭ReportDocument;这避免了报表计数器上不受控制地增加将停止应用程序的次数
protected void Page_Unload(object sender, EventArgs e)
{
if (reportDocument != null)
reportDocument.Close();
}
https://stackoverflow.com/questions/27916070
复制相似问题