How To: Silverlight grid hierarchy load on demand using MVVM and RIA services

Posted by: the telerik blogs, on 22 Oct 2009 | View original | Bookmarked: 0 time(s)

Ive made small example on how to load on demand RadGridView hierarchy child data using MVVM and RIA service: 

   Untitled

Using partial classes you can extend very easily generated code with desired load on demand logic:

    public partial class Customer
    {
        bool ordersLoaded = false;
        public IEnumerable<Order> CustomerOrders
        {
            get
            {
                if (!ordersLoaded)
                {
                    var query = from o in MyDataContext.DomainContext.GetOrdersQuery()
                                where o.CustomerID == CustomerID
                                select o;
 MyDataContext.DomainContext.Load(query);

                    ordersLoaded = true;
                }

                return Orders;
            }
        }
    }

and if you create your own data context you can bind all these completely codeless:

<telerik:RadGridView Name="RadGridView1" IsReadOnly="True" AutoGenerateColumns="False" ItemsSource="{Binding Customers}">
    <telerik:RadGridView.ChildTableDefinitions>
        <telerik:GridViewTableDefinition />
    </telerik:RadGridView.ChildTableDefinitions>
    <telerik:RadGridView.Columns>
        <telerik:GridViewDataColumn Header="Customer ID" DataMemberBinding="{Binding CustomerID}" />
        <telerik:GridViewDataColumn Header="Company Name" DataMemberBinding="{Binding CompanyName}" />
        <telerik:GridViewDataColumn Header="Contact Name" DataMemberBinding="{Binding ContactName}" />
        <telerik:GridViewDataColumn Header="City" DataMemberBinding="{Binding City}" />
        <telerik:GridViewDataColumn Header="Country" DataMemberBinding="{Binding Country}" />
    </telerik:RadGridView.Columns>
    <telerik:RadGridView.HierarchyChildTemplate>
        <DataTemplate>
            <telerik:RadGridView IsReadOnly="True" AutoGenerateColumns="False" ItemsSource="{Binding CustomerOrders}">
                <telerik:RadGridView.ChildTableDefinitions>
                    <telerik:GridViewTableDefinition />
                </telerik:RadGridView.ChildTableDefinitions>
                <telerik:RadGridView.Columns>
                    <telerik:GridViewDataColumn Header="Order ID" DataMemberBinding="{Binding OrderID}" />
                    <telerik:GridViewDataColumn Header="Order Date" DataMemberBinding="{Binding OrderDate}" />
                </telerik:RadGridView.Columns>
                <telerik:RadGridView.HierarchyChildTemplate>
                    <DataTemplate>
                        <telerik:RadGridView IsReadOnly="True" AutoGenerateColumns="False" ItemsSource="{Binding Details}">
                            <telerik:RadGridView.Columns>
                                <telerik:GridViewDataColumn Header="Unit Price" DataMemberBinding="{Binding UnitPrice}" />
                                <telerik:GridViewDataColumn Header="Quantity" DataMemberBinding="{Binding Quantity}" />
                                <telerik:GridViewDataColumn Header="Discount" DataMemberBinding="{Binding Discount}" />
                            </telerik:RadGridView.Columns>
                        </telerik:RadGridView>
                    </DataTemplate>
                </telerik:RadGridView.HierarchyChildTemplate>
            </telerik:RadGridView>
        </DataTemplate>
    </telerik:RadGridView.HierarchyChildTemplate>
</telerik:RadGridView>

Enjoy!

[Download]

Advertisement
Free Agile Project Management Tool from Telerik
TeamPulse Community Edition helps your team effectively capture requirements, manage project plans, assign and track work, and most importantly, be continually connected with each other.
Category: GridView | Other Posts: View all posts by this blogger | Report as irrelevant | View bloggers stats | Views: 3795 | Hits: 22

Similar Posts

  • Exporting SWF & FLV format reports in SSRS 2005 and 2008 more
  • Silverlight Release History : Q1 2009 SP2 (version 2009.1.526) more
  • Grid Configuration via Web Service more
  • TreeView and Web Services more
  • The DataGrid is Dead Long-live the DataGrid (Part 1 of N) more
  • EBZ213: David Chappell on services, business processes and BizTalk 2004 more

News Categories

.NET | Agile | Ajax | Architecture | ASP.NET | BizTalk | C# | Certification | Data | DataGrid | DataSet | Debugger | DotNetNuke | Events | GridView | IIS | Indigo | JavaScript | Mobile | Mono | Patterns and Practices | Performance | Podcast | Refactor | Regex | Security | Sharepoint | Silverlight | Smart Client Applications | Software | SQL | VB.NET | Visual Studio | W3 | WCF | WinFx | WPF | WSE | XAML | XLinq | XML | XSD