Table Class

Implements the functionalities that provides a flattened view of grouped and hierarchical records and manages all the records from the underlying source list.
Object Model
Table ClassRecord ClassChangedFieldInfoCollection ClassChangedFieldInfo ClassElement ClassRecord ClassCurrentRecordManager ClassDisplayElementsInTableCollection ClassElement ClassElementsInTableCollection ClassElement ClassEngine ClassTable ClassChildTable ClassChildTable ClassFilteredRecordsInTableCollection ClassRecord ClassRecord ClassDisplayElementsInTableCollection ClassElement ClassElementsInTableCollection ClassElement ClassChildTable ClassElement ClassElement ClassGroup ClassRecord ClassSection ClassTable ClassTableDescriptor ClassIPassThroughGroupingResult InterfacePrimaryKeySortedRecordsCollection ClassRecord ClassRecordsInTableCollection ClassRecord ClassTableCollection ClassTable ClassTable ClassSelectedRecordsCollection ClassSelectedRecord ClassTableDescriptor ClassITableEventsTarget InterfaceChildTable ClassUnsortedRecordsCollection ClassRecord Class
The table manages all the records from the underlying source list. The source list can be any IList collection. If it implements IBindingList, the table will listen to the ListChangedEvent and update its internal data whenever changes are made to the source list.

When the Table is initialized for the first time it will loop through all items in the source list and create a record object. The record object will be initialized with an index to the underlying source list item so that it can locate the item when you call its Record.GetData() property. Record.GetData() looks up the item in the underlying source list and returns a reference to it.

Once a record object has been initialized, it will stay attached to the underlying item. When records are inserted or moved, this relation will stay intact. The only time this link between record and the underlying item is released is when the underlying item gets deleted from the source list. In that event, the record object gets disposed. A record's sorted record index within the table can at any time be determined with the Table.Records.IndexOf(record) method. This method will always return the accurate index respecting any insertions, movements, or changes that were made in the source list.

When looping through the source list and initializing the records, the table also checks if categorization of data is necessary. When the TableDescriptor.RelationChildColumns or TableDescriptor.GroupedColumns collection are not empty, groups will be created for each new category.

A table has one main group, the ITableSource. The ITableSource gives you access to a list of child groups and child records.

The order of records and groups is defined by the TableDescriptor with schema information about the table. Once you make changes to the TableDescriptor, the table will be updated on demand the first time you try to access elements of the table after the change.

There are multiple ways to get access to a specific record:

Any element in the table can be accessed using its element or display index. There are four collections that let you access elements: A table has a ITableSource or ITableSource which identifies the current record. The current record can be edited and navigated with the CurrentRecordManager.

A table raises various events when changes are made to a record or when groups or records are collapsed or expanded. All events will bubble up to the parent engine object.

If an engine displays hierarchical data, a Table is created for each table of the data source. With a DataSet for example, a Table is created for each DataTable in the DataSet.

If a Table is a child table in a master-details relation, the table is grouped by the foreign key column. That way the parent table can get access to a group of records in the child table using the foreign key.

Inheritance Hierarchy

Syncfusion.Grouping.Base: 17.3460.0.14

See Also