Telerik provides RadDomainDataSource similar to the Microsoft DomainDataSource control to simplify the interaction between the user interface and data from a domain context. With the DomainDataSource, you can retrieve, shape, and edit data using only declarative syntax. You specify the domain context to use with the DomainDataSource, and then call the operations that are available through that domain context. RadDomainDataSource tightly integrates with RadGridView, RadDataFilter, RadDataPager, etc and performs filtering, paging and sorting on the server. Features Codeless approach to data-binding that supports most common data operations without the need for any custom code. Without RadDomainDataSource you would have to write hundreds of lines of code in order to support server side filtering. Yes sorting and paging were happening on the server automatically, but who needs them without the power of the built-in Excel like filtering of RadGridView. RadDomainDataSource gives you a seamless integration between your data and our data oriented components like: RadDataFilter, RadDataPager or RadGridView Filtering - The RadDomainDataSource control provides the FilterDescriptors collection to enable you to filter the data that is returned by the query. By adding filters, you can specify that only entities which meet the condition in the filter are loaded from the domain context. Unlike the MS DomainDataSource, RadDomainDataSource supports nesting of filter descriptors to unlimited depth allowing you to compose complex filter conditions. Adding a filter on the client (clicking some distinct value in the RadGridView filtering control UI) will automatically transfer this filter on the server, i.e. add it to the FilterDescriptors collection of the RadDomainDataSource. This is possible due to the fact that the two underlying views of the two controls detect each other and start synchronizing with each other, i.e. when you add a FilterDescriptors to the grid it is automatically added to the domain data source. Fine grained query parameter control – We expose a PreparedParameterValue event which provides a way for you to change each parameter or handle a possible exception before the entity query is sent to the server. This opens the door for handling any custom query scenario that you might have. MVVM friendly - We are exposing the heart of the control named – QueryableDomainServiceCollectionView as public class that you can start using in your ViewModels right away. You can learn the details here Sorting - The RadDomainDataSource provides the SortDescriptors collection to facilitate sorting on the data. In the SortDescriptors collection, you add SortDescriptor instances that describe the values to use for sorting the collection. You can add as many SortDescriptor instances as you want to provide layers of sorting. You can specify if the data is sorted in ascending or descending order. Paging - When displaying a large number of entities, you may wish to provide paging in your user interface. The RadDomainDataSource control enables you to specify the number of entities to load and the number of entities to display on a page. New records are loaded only when the user navigates to a page that contains entities which have not been loaded. You set the PageSize and LoadSize properties to specify the parameters for paging. Then, you bind a RadDataPager instance to the RadDomainDataSource to implement the interface for paging. Editing - To persist data modifications, call the SubmitChanges method on the RadDomainDataSource object. To cancel changes, call the RejectChanges method.