Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim txtSQL As String
Try
If Not IsPostBack Then
txtSQL = "SELECT SRP_GROUP,SRP_NAME,SRP_CODE FROM TBSYSREPORT WHERE SRP_ACTIVE=1 AND SRP_GROUP='报表' UNION SELECT SRP_GROUP,SRP_NAME,SRP_CODE FROM TBSYSREPORT WHERE SRP_ACTIVE=1 AND SRP_CODE IN(SELECT RPT_CODE FROM RPTUSER WHERE USR_CODE='" & User.Identity.Name.ToUpper & "') ORDER BY SRP_GROUP,SRP_CODE"
InitTree(mf.rsRead("WebRpt", txtSQL)) '初始化报表列表
trvRptList.ExpandAll()
Select1.Visible = False
ViewState.Add("TYPE", "") '预览控件:水晶报表CRV,网格GridView1
ViewState.Add("SQL", "") '数据源SQL语句
ViewState.Add("WHERE", "") '数据源SQL语句
ViewState.Add("CONN", "") '数据源连接字符串
ViewState.Add("PATH", "") '报表模板存放路径
ViewState.Add("sSQL", "") '数据源SQL语句
End If
If ViewState("TYPE").ToString = "CRV" Then ConfigureCrystalReports()
Catch ex As Exception
Response.Write(Err.Description)
End Try
End Sub
'初始化报表列表
Private Function InitTree(ByVal rs As SqlClient.SqlDataReader) As Boolean
'内容太多了,将这部分删掉了
End Function
Protected Sub trvRptList_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles trvRptList.SelectedNodeChanged
Dim sSQL As String
Dim rs As SqlClient.SqlDataReader
lblRptTitle.Text = .SelectedNode.Text
'加载选中的报表信息
sSQL = "SELECT SRP_SQL,DBF_NAME,SRP_FILENAME,SRP_REPORTFILE,SRP_TYPE,SRP_WHERE FROM TBSYSREPORT WHERE SRP_CODE='" & .SelectedValue & "'"
rs = mf.rsRead("WebRpt", sSQL)
If rs.HasRows Then
rs.Read()
If rs.GetBoolean(4) Then ViewState("TYPE") = "CRV"
ViewState("SQL") = rs.GetString(0)
ViewState("WHERE") = rs.GetString(5)
ViewState("CONN") = rs.GetString(1)
If rs.GetBoolean(4) Then
'在服务器上使用绝对路径,可能对无法加载的错误有效
ViewState("PATH") = Request.PhysicalApplicationPath & "WebRpt\Reports\" & rs.GetString(2)
myRpt.ShowReport(rs, 3, ViewState("PATH")) '从数据库中下载报表模板到目录ViewState("PATH")
End If
rs.Close()
'加载报表筛选条件
sSQL = "SELECT * FROM TBSYSREPORTDT WHERE SRP_CODE='" & .SelectedValue & "' ORDER BY SRD_SEQNO"
rs = mf.rsRead("WebRpt", sSQL)
While rs.Read
If rs.GetString(7) = "TEXT-VALUE" Then
lblParam.Text = rs.GetString(4) '显示的字段名
lblParam.ToolTip = rs.GetString(2) & "." & rs.GetString(3) '实际字段名
lblParam.Enabled = Not rs.GetBoolean(9) '是否必选条件
lblParam.Visible = True
txtParam.Value = ""
txtParam.Visible = True
End If
If rs.GetString(7) = "TEXT-LIST" Then
lblList.Text = rs.GetString(4)
lblList.ToolTip = rs.GetString(2) & "." & rs.GetString(3)
lblList.Enabled = Not rs.GetBoolean(9)
lblList.Visible = True
Dim s() As String
Dim s1 As Object
Select1.Items.Clear()
Select1.Items.Add("")
s = Split(rs.GetString(5), ",")
For Each s1 In s
Select1.Items.Add(s1.ToString)
Next
Select1.Visible = True
End If
If rs.GetString(7) = "TIME-VALUE" Then
lblDate.Text = rs.GetString(4)
lblDate.ToolTip = rs.GetString(2) & "." & rs.GetString(3)
lblDate.Enabled = Not rs.GetBoolean(9)
lblDate.Visible = True
txtFrmDate.Visible = True
txtFrmDate.Value = ""
End If
If rs.GetString(7) = "TIME-RANGE" Then
lblDate.Text = rs.GetString(4)
lblDate.ToolTip = rs.GetString(2) & "." & rs.GetString(3)
lblDate.Enabled = Not rs.GetBoolean(9)
lblDate.Visible = True
txtFrmDate.Visible = True
txtToDate.Visible = True
txtFrmDate.Value = ""
txtToDate.Value = ""
End If
End While
rs.Close()
btnView.Enabled = True
btnExt.Enabled = True
End If
End If
End With
Catch ex As Exception
End Try
End Sub
'报表或者GridView1预览
Protected Sub btnView_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnView.Click
Try
If Not initSQL() Then
Exit Sub
End If
If ViewState("TYPE") = "GDV" Then
'用GridView1预览
crvReport.Dispose()
GridView1.DataSource = mf.rsDataSet(ViewState("CONN"), ViewState("sSQL"))
GridView1.DataBind()
GridView1.Visible = True
Else
'用水晶报表预览
GridView1.Dispose()
crsReport.ReportDocument.FileName = ViewState("PATH")
If ViewState("CONN").ToString = "DEFAULT" Then
'需要用户登录
crvReport.EnableDatabaseLogonPrompt = True
crsReport.ReportDocument.DataDefinition.RecordSelectionFormula = ViewState("sSQL")
Else
'无需用户登录
crsReport.ReportDocument.SetDataSource(mf.rsDataSet(ViewState("CONN"), ViewState("sSQL")).Tables(0))
crvReport.EnableDatabaseLogonPrompt = False
End If
ConfigureCrystalReports()
End If
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
Private Sub ConfigureCrystalReports()
crvReport.ReportSource = crsReport
crvReport.Visible = True
End Sub
'GridView1翻页
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
'内容过长,将这部分删除
End Sub
'根据用户选择条件,产生数据源的SQL语句
Protected Function initSQL() As Boolean
'内容过长,将这部分删除
End Function
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
'内容过长,将这部分删除
End Sub
Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload
crvReport.Dispose()
crsReport.Dispose()
End Sub