I have a ReportViewer in which I dynamically loaded a RDLC file (Local Processing mode). I need to provide the data to the ReportViewer so I try to add a new ReportDataSource object to the ReportViewer.LocalReport.DataSources.
All I get is an ArgumentException with the message "Value does not fall within the expected range"
sqlConnection1.ConnectionString = ConnectionString(connectionRef);
sqlCommand1.CommandType = CommandType.StoredProcedure;
sqlCommand1.Connection = sqlConnection1;
sqlCommand1.CommandText = storedProcedureName;
sqlDataAdapter1.SelectCommand = sqlCommand1;
sqlDataAdapter1.TableMappings.Clear();
for (int i = 0; i < dsData.Tables.Count; i++)
{
sqlDataAdapter1.TableMappings.Add("Table" + (i == 0 "" : i.ToString()), dsData.Tables[ i ].TableName);
}
sqlDataAdapter1.Fill(dsData);
reportViewer1.ProcessingMode = ProcessingMode.Local;
reportViewer1.LocalReport.ReportPath = @"C:\Temp\ReportEngine\ReportEngine\ReportDefinition.rdlc";
reportViewer1.LocalReport.DataSources.Clear();
ReadOnlyCollection<string> dataSourcesNames = (ReadOnlyCollection<string>)reportViewer1.LocalReport.GetDataSourceNames();
ReportDataSource rds = new ReportDataSource();
rds.Name = dataSourcesNames[0];
rds.Value = dsData; // <------ - - - - - - - - - - - - -HERE STRIKES THE EXCEPTION
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.RefreshReport();
The exception is thrown at the line where I assign the typed DataSet to the ReportDataSource's Value property.
What am I doing wrong here
TIA! :)

Adding DataSource to a ReportViewer dynamically
John Dekker
However when I am trying to add a DataSource to the Report Definition as a DataTable (typed DataTable or untyped) I get : "The service 'Microsoft.VisualStudio.Shell.Interop.IVsRunningDocumentTable' must be installed for this operation to succeed. Ensure that this service is available"
This puzzles me as I've installed MS VS2005 quite complete
Jeroen van der Wal
I was getting a simillar error. But instead of binding my report to a DataSet I was binding it to a strongly typed business object. It turns out that the error was occuring as I was binding it to a single instance of my business object. To fix this error I created a Generic List of my strongly typed object, added my single instance to this collection and added this list to the report datasources.....it worked
swordman
DataSet myDataSet = myDb.ExecuteDataSet(dbCmd); //using DAAB
myReportViewer.LocalReport.DataSources.Clear();
myReportViewer.LocalReport.DataSources.Add(new ReportDataSource("ReportDataSource", myDataSet.Tables[0]));