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:
public
class
MyDataContext
{
IQueryable _Data;
public
IQueryable Data
{
get
{
if
(_Data ==
null
)
{
var northwindEntities =
new
NorthwindEntities();
var queryable = from o
in
northwindEntities.Orders
from od
in
northwindEntities.Order_Details
select
new
{
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