[]
A Section report allows to specify a data set and unbound data, using a similar API. You need to just specify DataSet, DataTable, DataView, RowCollection as shown in the DataSource property. For DataSet, you should specify it as shown in the DataMember property.
In addition, a Section report allows to use any unbound data as a data source with the following script logic:
Right-click the design surface and select View Code.
Add the following code inside the class declaration of the report:
Private datasource1 As IEnumerator(Of String) = Nothing
Dim list As List(Of String)= Nothing
Private Function GetIEnumerableData() As IEnumerable(Of String)
For i As Integer = 1 To 10
list.Add(String.Format("TestData_{0}", i.ToString()))
Next
Return list
End Function
private IEnumerator<string> datasource = null;
private IEnumerable<string> GetIEnumerableData()
{
for (int i = 1; i <= 10; i++)
{
yield return string.Format("TestData_{0}", i.ToString());
}
}
On the design surface, right-click the gray area around the design surface to select the report and select Properties.
In the Properties window that appears, click the Events icon to view the available events for the report.
Double-click the DataInitialize event. This creates an event-handling method for the report's DataInitialize event.
Add the following code to the handler to add fields to the report's Fields collection.
Me.Fields.Add("TestField")
Me.list = New List(Of String)
datasource1 = GetIEnumerableData().GetEnumerator()
this.Fields.Add("TestField");
datasource = GetIEnumerableData().GetEnumerator();
Repeat steps 3 and 4 to open the events list in the property window.
Double-click the FetchData event. This creates an event-handling method for the report's FetchData event.
Add code to the handler to retrieve information to populate the report fields.
If datasource1.MoveNext() Then
Me.Fields("TestField").Value = datasource1.Current
eArgs.EOF = False
Else
eArgs.EOF = True
End If
if (datasource.MoveNext())
{
this.Fields["TestField"].Value = datasource.Current;
eArgs.EOF = false;
}
else
eArgs.EOF = true;
type=info
Tip: In order to view the added data at run time, add controls to your report and assign their DataField property to the name of the fields you added in code while creating a field collection.