How to pass multivalue parameters from URL query string with web service data source
Environment
Product | Progress® Telerik® Reporting |
Project Type | WebForms application |
Description
Do you know how to pass multi-valued parameter from URL query string into the report?
Solution
Construct the web API to take the query parameter values with some delimiter (for example ingredients=1,2,3,4) which then can be split and joined with Join() function.
Here, you can download a sample WebForms application that demonstrates the approach. The steps are the following:
Create a report that retrieves sample data from a web service through WebServiceDataSource component. In the example project we have used users' sample data.
-
While configuring the data source (use the WebServiceDataSource Wizard), at the step 2 - Configure request parameters, create parameter with:
Name: Id Type: Query Value: = Parameters.Id.Value //report parameter with the same name (multi-value with available values set) Desing-Time Value: 1 //optional
-
The client web application should contain a button that passes a multi-value query string parameter in following format - ?Id=1,5,7. The implementation of the button will look like the following:
<asp:Button runat="server" ID="myButton" OnClientClick="window.location.href='ReportViewerForm.aspx?Id=1,5,7'; return false;" Text="Id=1,5,7"></asp:Button>
-
Lastly, handle the values into the client ReportSource parameters collection:
public partial class ReportViewerForm : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { var clientReportSource = new Telerik.ReportViewer.Html5.WebForms.ReportSource(); clientReportSource.IdentifierType = Telerik.ReportViewer.Html5.WebForms.IdentifierType.TypeReportSource; clientReportSource.Identifier = typeof(ReportLibrary1.Report1).AssemblyQualifiedName; //multivalue parameter ...?Id=1,5,7 var multiValueParam = Request.QueryString["Id"].Split(new[] { ',' }); clientReportSource.Parameters.Add("Id", multiValueParam); this.reportViewer1.ReportSource = clientReportSource; } }
Notes
In order to build it successfully, you would need to Restore the NuGet packages and run the Upgrade Wizard to add the needed references.