In ABL, the browse is the most sophisticated UI widget for displaying data. Despite that sophistication, it is simple to use. You build a query against a temp-table to link the browse and the data. This integration between user interface components and data objects is called data binding.
ABL provides tight binding between its native data objects (database buffer fields, temp-table fields, variables, and so on) and its native user interface. You need little ABL code to display and update data in an ABL user interface. If you do not specify formatting, ABL even applies the default formatting to the data without any extra application code.
Data binding also exists in .NET. If a particular .NET control supports data binding, you have access to similar display and update capabilities. For example, binding a System.Windows.Forms.DataGrid to a System.Data.DataTable provides automatic data display and the capability to add, update, or delete rows. This data binding is accomplished through prescribed interfaces. Any data object that complies with the binding interface can bind with the .NET control.
To access data from an ABL data source object in a .NET control, ABL provides an intermediary binding object with the prescribed interface to act as a conduit between the two objects. This conduit is the Progress.Data.BindingSource object, which is referred to as the ProBindingSource in the documentation and the Progress Developer Studio for OpenEdge UI. The ProBindingSource extends the .NET binding source object, System.Windows.Forms.BindingSource, to facilitate binding ABL data to a .NET control.