Loading Data from RIA Services

The purpose of this tutorial is to show you how to populate a RadGridView with data from a .NET RIA Service.

This tutorial will use the Northwind database, which can be download it from here.

  • Add a new RadGridView declaration in your XAML:

<telerik:RadGridView x:Name="radGridView" Margin="8"/> 
The RadGridView will be bound to a data source object, that has a property Customers. When the control is loaded all customers from the Customers table in the Northwind database are loaded asynchronously.
  • Create a new class named NorthwindDataSource.

public class NorthwindDataSource 
{ 
} 
Public Class NorthwindDataSource 
End Class 
  • In the NorthwindDataSource class add a reference to an ObservableCollection of Customers.

  • In the NorthwindDataSource class add a reference to your RIA Service context:

public class NorthwindDataSource 
{ 
    SampleRiaContext riaContext; 
    public NorthwindDataSource() 
    { 
        riaContext = new SampleRiaContext(); 
        this.Customers = new ObservableCollection<Customer>(); 
    } 
    public ObservableCollection<Customer> Customers 
    { 
        get; 
        set; 
    } 
} 
Public Class NorthwindDataSource 
    Private riaContext As SampleRiaContext 
    Public Sub New() 
        riaContext = New SampleRiaContext() 
        Me.Customers = New ObservableCollection(Of Customer)() 
    End Sub 
    Public Property Customers() As ObservableCollection(Of Customer) 
End Class 
  • Add the following code in the constructor of the NorthwindDataSource. It will make the initial load of all Customers from the database:

LoadOperation<Customer> loadOperation = riaContext.Load<Customer>(riaContext.GetCustomersQuery()); 
loadOperation.Completed += loadOperation_Completed; 
Dim loadOperation As LoadOperation(Of Customer) = riaContext.Load(Of Customer)(riaContext.GetCustomersQuery()) 
AddHandler loadOperation.Completed, AddressOf loadOperation_Completed 
' 

And here is the code handling the Completed event of the load operation:

private void loadOperation_Completed(object sender, EventArgs e) 
{ 
    //Consume the result 
    foreach (Customer c in riaContext.Customers) 
    { 
        this.Customers.Add(c); 
    } 
} 
Private Sub loadOperation_Completed(ByVal sender As Object, ByVal e As EventArgs) 
    'Consume the result 
    For Each c As Customer In riaContext.Customers 
        Me.Customers.Add(c) 
    Next c 
End Sub 
  • Declare the NorthwindDataSource object as a resource in your application.

<UserControl.Resources> 
    <my:NorthwindDataSource x:Key="DataSource"/> 
</UserControl.Resources> 
  • Update your RadGridView declaration - set the ItemsSource property.

<telerik:RadGridView ItemsSource="{Binding Source={StaticResource DataSource}, Path=Customers}"/> 
Run your demo, the result can be seen on the next picture:

Telerik Silverlight DataGrid PopulatingWithDataLoadFromRia 010

If you need to define the columns manually read the topic Defining Columns.

See Also

In this article
Not finding the help you need? Improve this article