my scenario is something like that i have one common report viewer in one win form and every body call that win form and pass required parameter and dataset. that form collect those data and bind ssrs report. now the problem is that a report may have 5 subreport and may have 3 subreport. that form has one event for handling subreport.
private void reportViewer1_suberport1(object sender, SubreportProcessingEventArgs e)
{
// code here to bind subreport
}
whenever any person call my winform which has report viewer and if that report has subreport then person has to write code inside reportViewer1_suberport1 event to bind his report.
my sample code for reportViewer1_suberport1 event
private void reportViewer1_suberport1(object sender, SubreportProcessingEventArgs e)
{
Select Case e.ReportPath
Case "subreport1"
Dim tbl As DataTable = New DataTable("TableName")
Dim Status As DataColumn = New DataColumn
Status.DataType = System.Type.GetType("System.String")
Status.ColumnName = "Status"
tbl.Columns.Add(Status)
Dim Account As DataColumn = New DataColumn
Account.DataType = System.Type.GetType("System.String")
Account.ColumnName = "Account"
tbl.Columns.Add(Account)
Dim rw As DataRow = tbl.NewRow()
rw("Status") = core.GetStatus
rw("Account") = core.Account
tbl.Rows.Add(rw)
e.DataSources.Add(New ReportDataSource("ReportDatasourceName", tbl))
Case "subreport2"
core.DAL.cnStr = My.Settings.cnStr
core.DAL.LoadSchedule()
e.DataSources.Add(New ReportDataSource("ScheduledTasks", _
My.Forms.Mother.DAL.dsSQLCfg.tSchedule))
Case "subreport3"
core.DAL.cnStr = My.Settings.cnStr
Dim dt As DataTable = core.DAL.GetNodesForDateRange(DateAdd("d", _
-1 * CInt(e.Parameters("NumberOfDays").Values(0)), _
Today), _
Now)
e.DataSources.Add(New ReportDataSource("Summary", dt))
End Select
End Sub
i need a good way for write generic code inside the above routine as a result any number of subreport can be bind. please put some light & guide me. thanks