Build a Simple Application with .Net RIA Services (Silverlight 3) – Part 2

7 באפריל 2009

3 תגובות

Build a Simple Application with .Net RIA Services (Silverlight 3) – Part 2


.Net RIA Services DomainDataSource This is the second post in a series of posts about building applications with Microsoft .Net RIA Services and Silverlight 3. In part 1 of this series I created a new application, created a simple data model and used the Domain Service and Domain Context to retrieve data and bind it to a DataGrid.
In this post we take it from that step, and replace the manual work with the DomainDataSource that provides some more advanced scenarios.


Use a DomainDataSource to easily connect the data


Remove the code that retrieves the data from the server. Open Views\HomePage.xaml and comment out all the code in the Page_Loaded method.


Instead of loading the data manually, add a DomainDataSource control to the page. To do this, add a reference to System.Windows.Ria.Controls.dll, and add the Xml namespace that relates to its contents:



<navigation:Page x:Class="BankApp.HomePage"


  …
  xmlns:ria="clr-namespace:System.Windows.Controls;
    assembly=System.Windows.Ria.Controls
"


  Loaded="Page_Loaded"


  Title="HomePage Page">
  …


 


</navigation:Page>

 


Add the DomainDataSource to the page



<navigation:Page x:Class="BankApp.HomePage"
 


  <Grid x:Name="LayoutRoot" Background="White">


    <ria:DomainDataSource x:Name="customersDataSource"


                          LoadMethodName="GetCustomers"


                          AutoLoad="True"


                          LoadSize="5">


    </ria:DomainDataSource>


  


  </Grid>


</navigation:Page>


Reminder: After creating the DomainService in the server side, Visual Studio has generated a client side DomainContext that does all the magic of connecting to the server for us.


Assign the DomainContext to the DomainDataSource so it can use it to pull data from the server. To do that, add a local xml namespace:



<navigation:Page x:Class="BankApp.HomePage"


  


 


   xmlns:local="clr-namespace:BankApp.Web"


   Title="HomePage Page">
  


 


</navigation:Page>

 


And do the assignment:



 



<ria:DomainDataSource x:Name="customersDataSource"


                      LoadMethodName="LoadCustomers"


                      AutoLoad="True"


                      LoadSize="5">


  <ria:DomainDataSource.DomainContext>


    <local:BankDomainContext />


  </ria:DomainDataSource.DomainContext>


</ria:DomainDataSource>


 


The last thing we need to do is to bind the DataGrid to the DomainDataSource.



<data:DataGrid MinHeight="200"


              x:Name="dataGrid"


              ItemsSource="{Binding Data, ElementName=customersDataSource}">


</data:DataGrid>


Run the application, and see how the data is being loaded in chunks according to the LoadSize property of the DomainDataSource.


Add a DataPager Control to enable paging through the data. To do that, add a reference to System.Windows.Controls.Data.DataForm.dll the following xml namespace:


xmlns:dataControls=
    "clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm”


Add the DataPager control and bind it to the DomainDataSource:



<data:DataGrid MinHeight="200" …>


</data:DataGrid>


<dataControls:DataPager PageSize="3"


              Source="{Binding Data, ElementName=customersDataSource}" />


If you now run the application, you should get a result similar to this:


DomainDataSource DataGrid DataPager


 


Data Grouping


Add Grouping support to the DataGrid. Add the following xml namespace:


xmlns:riaData="clr-namespace:System.Windows.Data;assembly=System.Windows.Ria.Controls"


Then, add a group descriptor to group the results by the property City.



<ria:DomainDataSource >


  <ria:DomainDataSource.GroupDescriptors>


    <riaData:GroupDescriptor PropertyPath="City" />


  </ria:DomainDataSource.GroupDescriptors>


</ria:DomainDataSource>


The result should look like this:


DataGrid DomainDataSource Grouping GroupDescriptor


Data Sorting


To add sorting support, add a SortDescriptor:



<ria:DomainDataSource>


  <ria:DomainDataSource.SortDescriptors>


    <riaData:SortDescriptor PropertyPath="CustomerID"


                            Direction="Descending" />


  </ria:DomainDataSource.SortDescriptors>


</ria:DomainDataSource>


Rich Data Filtering


Add a dynamic filtering support based on a selected value of a CheckBox. Add a Checkbox above the DataGrid.



<CheckBox x:Name="chkBusiness"


          Content="Business Customer ?" />


<data:DataGrid x:Name="dataGrid" …> </data:DataGrid>


Add a FilterDescriptor that filters data according to the IsBusiness property of each item. Bind the FilterDescriptor  to the IsChecked property of the above checkbox.



<ria:DomainDataSource x:Name="customersDataSource" … >



  



  <ria:DomainDataSource.FilterDescriptors>


    <riaData:FilterDescriptorCollection>


      <riaData:FilterDescriptor PropertyPath="IsBusiness"


                                Operator="IsEqualTo">


        <riaData:ControlParameter ControlName="chkBusiness"


                                  PropertyName="IsChecked"


                                  RefreshEventName="Click" />


      </riaData:FilterDescriptor>


    </riaData:FilterDescriptorCollection>


  </ria:DomainDataSource.FilterDescriptors>


</ria:DomainDataSource>


Run the application, check and uncheck the checkbox, and see how the data is refreshed accordingly.


FilterDescriptors DomainDataSource


Conclusion


In this post we took on from where we left at Part 1 , and replaced the manual work needed to get the data from the server with the DomainDataSource that provides some more advanced scenarios. In the next post we’ll introduce the DataForm control and talk more about data validation.


Enjoy!

הוסף תגובה
facebook linkedin twitter email

3 תגובות

  1. Rachida Dukes9 באפריל 2009 ב 19:44

    This series is quite important to learn the new sivlerlight 3 and .Net RIA services. Please, keep adding more of this.
    Thanks,
    Rachida Dukes

  2. nick_basdel30 ביוני 2009 ב 12:04

    http://alzele.com/vardel.html erolovirol
    erolovirol
    [link=http://sitc4tdomlic.com/sitdarrel.html]erolovirol[/link]
    [url=http://noolorele.com/algetlitro.html]erolovirol[/url]
    http://noracletoolobas.com/letoersitc.htm trrolol chivara
    dronc4tacelr
    http://ertrocnoboacelt.com/ordelrobas.htm trocals bovarelboc
    letogetlas
    http://pasbomonoloroda.com/roroou.htm chizelrel racrelc
    letolib
    http://caeltercoracpas.com/aleltch.htm liouli chiroacsit
    libocnaelc4t
    http://delbopastrtatrc.com/dronvidro.htm ricououc4to relrocnali
    monvic4tcoac
    http://ricalacolocorac.com/darrolrololo.htm sitgetmon cabocel
    pasromondron
    http://letoletobocc
    c4tboccode

Comments are closed.