Step 1: Create a Silverlight project
Step 2: Add PageReport
Step 3: Get the report content to be displayed by the Viewer control
[WebMethod]
public Byte[] GetProductsReport()
{
//Create a blank page report
GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport();
//Load report layout
rpt.Load( new System.IO.FileInfo(Server. MapPath(" PageReport1.rdlx ")));
//Create and set up a data source
GrapeCity.ActiveReports.PageReportModel.DataSource myDataSource = new GrapeCity.ActiveReports.PageReportModel.DataSource();
myDataSource.Name = " DataSource1 ";
myDataSource.ConnectionProperties.DataProvider = " OLEDB ";
myDataSource.ConnectionProperties.ConnectString = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\Reels.mdb ";
//Set Data Set
GrapeCity.ActiveReports.PageReportModel.DataSet myDataSet = new GrapeCity.ActiveReports.PageReportModel.DataSet();
GrapeCity.ActiveReports.PageReportModel.Query myQuery = new GrapeCity.ActiveReports.PageReportModel.Query();
myDataSet.Name = " DataSet1 ";
myQuery.DataSourceName = " DataSource1 ";
myQuery.CommandType = GrapeCity.ActiveReports.PageReportModel.QueryCommandType.Text;
myQuery.CommandText = GrapeCity.ActiveReports.Expressions.ExpressionInfo.FromString(" SELECT TOP 50 * FROM Product ");
myDataSet.Query = myQuery;
//Add Field
GrapeCity.ActiveReports.PageReportModel.Field _field = new
GrapeCity.ActiveReports.PageReportModel.Field(" ProductID ", " ProductID ", null );
myDataSet.Fields.Add(_field);
_field = new GrapeCity.ActiveReports.PageReportModel.Field(" InStock ", " InStock ", null );
myDataSet.Fields.Add(_field);
_field = new GrapeCity.ActiveReports.PageReportModel.Field(" Price ", " Price ", null );
myDataSet.Fields.Add(_field);
//Bind data source and data set to report
rpt.Report.DataSources.Add(myDataSource);
rpt.Report.DataSets.Add(myDataSet);
//Save report in Rdf format
GrapeCity.ActiveReports.Export.Rdf.RdfRenderingExtension rdfe = new GrapeCity.ActiveReports.Export.Rdf.RdfRenderingExtension();
GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider ms = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
rpt.Run();
rpt.Document.Render(rdfe, ms);
GrapeCity.ActiveReports.Document.SectionDocument doc_rdf = new GrapeCity.ActiveReports.Document.SectionDocument();
doc_rdf.Load(ms.GetPrimaryStream(). OpenStream() as System.IO.MemoryStream);
return doc_rdf.Content;
}
Step 4: Browse the report content in Silverlight
private void viewer1_Loaded( object sender, RoutedEventArgs e)
{
//Load report from WebService
ReportServiceReference.ReportServiceSoapClient client = new ReportServiceReference.ReportServiceSoapClient();
client.GetProductsReportAsync();
client.GetProductsReportCompleted += new EventHandler<ReportServiceReference.GetProductsReportCompletedEventArgs>(client_GetProductsReportCompleted);
}
void client_GetProductsReportCompleted( object sender, ReportServiceReference.GetProductsReportCompletedEventArgs e)
{
//Show Report
System.IO.MemoryStream ms = new System.IO.MemoryStream(e.Result);
GrapeCity.Viewer.Common.StreamDocumentLoader loader = new GrapeCity.Viewer.Common.StreamDocumentLoader(ms, GrapeCity.Viewer.Common.DocumentFormat.Rdf);
viewer1.LoadDocument(loader);
}