FlexReport for WPF | ComponentOne
Data Binding / Data Sources
In This Topic
    Data Sources
    In This Topic

    A FlexReport definition can include several data sources, which are accessible through C1FlexReport.DataSources collection. The data sources in this collection are identified by unique names. These data sources can be used as:

    The list of supported data source types in FlexReport are as follows:

    For backwards compatibility with C1Report, C1FlexReport has a DataSource property which points to DataSources [DataSourceName]. When a new C1FlexReport is created, a single element with the name 'Main' is added to its C1FlexReport.DataSources collection, and 'Main' is assigned to the C1FlexReport.DataSourceName property.

    Note that in C1Report, Main data source is the only data source for the report. 

    Binding Data to Parameters in Multiple Data Source Report

    Binding data to parameters defines the valid values for the report parameters (elements in the C1FlexReport.Parameters collection). The ReportParameter.AllowedValuesDefinition.Binding.DataSourceName property indicates the data source which is used to build the list of possible values in the parameters. The following code illustrates how to bind data to the parameters in a report with multiple data sources.

    ' add datasource and parameter using this datasource
    Dim mds As DataSource = rep.DataSource
    Dim ds As New DataSource()
    ds.Name = "CategoriesDS"
    ds.ConnectionString = mds.ConnectionString
    ds.RecordSource = "select * from categories"
    ds.DataProvider = DataProvider.OLEDB
    rep.DataSources.Add(ds)
    mds.RecordSource = "select * from products where categoryid = [CategoryParam]"
    Dim rp As New ReportParameter()
    rp.DataType = Doc.ParameterType.[Integer]
    rp.Prompt = "Category"
    rp.Name = "CategoryParam"
    rp.AllowedValuesDefinition.Binding.DataSourceName = "CategoriesDS"
    rp.AllowedValuesDefinition.Binding.ValueExpression = "CategoryID"
    rp.AllowedValuesDefinition.Binding.LabelExpression = "CategoryName"
    rep.Parameters.Add(rp)
    
    // add datasource and parameter using this datasource
    DataSource mds = rep.DataSource;
    DataSource ds = new DataSource();
    ds.Name = "CategoriesDS";
    ds.ConnectionString = mds.ConnectionString;
    ds.RecordSource = "select * from categories";
    ds.DataProvider = DataProvider.OLEDB;
    rep.DataSources.Add(ds);
    mds.RecordSource = "select * from products where categoryid = [CategoryParam]";
    ReportParameter rp = new ReportParameter();
    rp.DataType = Doc.ParameterType.Integer;
    rp.Prompt = "Category";
    rp.Name = "CategoryParam";
    rp.AllowedValuesDefinition.Binding.DataSourceName = "CategoriesDS";
    rp.AllowedValuesDefinition.Binding.ValueExpression = "CategoryID";
    rp.AllowedValuesDefinition.Binding.LabelExpression = "CategoryName";
    rep.Parameters.Add(rp);