Table of Contents

TLinqDataTableState<T> Class

This class implements support for Linq queries in FlexCelReport. Inherit this class if you want to implement some non-standard Linq query provider. For normal cases, you don't need to do anything since FlexCel already implements a descendant of this class with the default functionality.

Syntax

Namespace: FlexCel.Report

public abstract class TLinqDataTableState<T>: VirtualDataTableState, IDisposable, ILinqDataTableState

Type Parameters

Type Parameter Description
T Type of the object that will be enumerated.

Constructors

Name Description
TLinqDataTableState Creates a new LinqDataTable​State.​

Methods

Name Description
Dispose Override this method on derived classes.
Eof Returns true when at the end of the table.
FilteredRowCount This method will be called when a Split master wants to know how many records its detail has. For example, if the detail has 30 records and the split is at 10, the Split master will call this method to find out that it has to return 3 on its own record count.
You need to filter the data here depending on the master detail relationships, but not on the splitLink.
GetDetail<Q> Returns a detail table. This is used in master-detail relationships to get the nested table for the detail band.
GetFilterAction This method returns a function that can be used to filter the data. This implementation calls SqlFilter when rowFilter starts with "@", or calls [SimpleFilter](SimpleFilter.md) when rowFilter doesn't start with "@". You might want to replace this method by a different one that filters in a different way.
GetValue Overloaded
GetValue(Int32)
GetValue(Int32, Int32)
MoveFirst This method is called when we want to move to the first record.
You can always know the current record with VirtualDataTable​State.​Position
MoveMasterRecord This method will be called each time that the master datasource moves its position. Use it to filter the data returned if this is used on a master-detail relationship.
MoveNext This method is called when we want to move to the next record.
You can always know the current record with VirtualDataTable​State.​Position
SimpleFilter This method is called by GetFilterAction when the rowFilter doesn't start with "@"\.<br />It will do a simple parse of the rowFilter string, allowing "AND" "OR" "()" and equality comparisons.
SortData Sorts the data according to SortStr.
SortDataByField<Q> This method is used by the current SortData implementation, and it creates an expression to sort the data.
SqlFilter This method is called by GetFilterAction when the rowFilter starts with "@"\. When overriding [GetFilterAction](GetFilterAction.md) you might want to call this method if rowfilter starts with "@"\.<br /><br /><br />This implementation tries to find a "Where(string)" method in the data and call it.
TryAggregate This method is used by the "AGGREGATE" tag in a FlexCel report to calculate the maximum/​minimum/​average/​etc of the values in the table. If you don't implement this method, FlexCel will still calculate those values by looping through the dataset, but if you have a faster way to do it (like with a "select max(field) from table") then implement this method and return true.

Properties

Name Description
Data Data for the table. Note that this might change in a master-detail report, every time the master changes its active record, Data in the detail will change to the records for the master.
Fields A list of then public fields in the datatype.
Filters A list of filter strings that must be applied to the data.
RowCount Returns the number of rows available on the dataset, for the current state. Note that this method can be called many times, so it should be fast.
Use a cache if necessary. Do *not* use something like "return select count(*) from table" here, it would be too slow.
SplitLink Split link.