Just before our upcoming release of Q1 2010 SP1 (early next week), I’ve decided to check how RadGridView for WPF will handle complex Entity Framework 4.0 query with almost 2 million records:
publicclassMyDataContext{IQueryable _Data;publicIQueryable Data{get{if(_Data ==null){var northwindEntities =newNorthwindEntities();var queryable = from oinnorthwindEntities.Ordersfrom odinnorthwindEntities.Order_Detailsselectnew{od.OrderID,od.ProductID,od.UnitPrice,od.Quantity,od.Discount,o.CustomerID,o.EmployeeID,o.OrderDate};_Data = queryable.OrderBy(i => i.OrderID);}return_Data;}}}
The grid is bound completely codeless in XAML using RadDataPager with PageSize set to 50:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
Title="MainWindow" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:my="clr-namespace:WpfApplication1" xmlns:my1="clr-namespace:System;assembly=mscorlib">
<Window.Resources>
<my:MyDataContext x:Key="dataContext" />
</Window.Resources>
<Grid DataContext="{StaticResource dataContext}">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<telerik:RadGridView x:Name="RadGridView1" ItemsSource="{Binding Data}" />
<telerik:RadDataPager PageSize="50" Source="{Binding Items,ElementName=RadGridView1}" Grid.Row="1"/>
</Grid>
</Window>
The result: Blazing fast sorting, paging, grouping and filtering of all data applied directly to the data-base server!
Vladimir Enchev is Director of Engineering, Native Mobile UI & Frameworks