zoukankan      html  css  js  c++  java
  • 怎样使用.NET RIA Services 创建 Silverlight Business Application(一)

    HRApp 项目是.NET RIA Services MSDN  上的案例,一个使用Silverlight 3.0 + .Net RIA Service 构建的完整商业应用程序,

    学习英文版的开发手册总是比较费力的,所以顺带着简略翻译一下,也有部分自己心得体会,不足之处还望大家多多交流。

    1 安装

    1. 卸载以前的版本

    a. Microsoft Silverlight (任何Silverlight 3 RTW之前的版本)

    b. Microsoft Silverlight SDK

    c. Microsoft Silverlight Tools for Visual Studio 2008

    2. 安装.NET Framework 3.5 SP1 和Visual Studio 2008 SP1 (带 SQL Express),参考:

    http://msdn.microsoft.com/en-us/vstudio/cc533448.aspx.

    3. 顺序安装以下最新版本软件:

    a. Silverlight 3

    b. Silverlight 3 SDK

    c. Silverlight 3 Tools for Visual Studio 2008 SP1

    4.  .NET RIA Services July Preview

    2 创建工程

    clip_image002[4]

    选择创建Silverlight Business Application ,会自动添加所需.net RIA引用,并生成一个Silverlight项目和一个web项目。其中的web项目已经集成了登录和注册功能模块。按F5运行查看演示。默认的注册功能需要确保本机已经安装SQLSERVER 2005 EXPRESS ,第一次运行会提示更改配置文件以启用客户端调试。

    clip_image004[4]

    2.1 创建界面

    1. 打开客户端工程中的MainTest.xaml文件,找到下面的代码

    <TextBlock x:Name="ApplicationNameTextBlock" Style="{StaticResource ApplicationNameStyle}" Text="Application Name"/>

    替换为

    <TextBlock x:Name="ApplicationNameTextBlock" Style="{StaticResource ApplicationNameStyle}" Text="HR Application"/>

    2. 选择HRApp项目,右击添加 New File.

    3. 弹出对话框,选择Page ,命名为EmployeeList.

    clip_image006[4]

    4. 打开 EmployeeList.xaml 在<Grid>标记下添加下面的代码。

    Code

    5. 在项目面板中将EmployeeList.xaml拖动到 Views 文件夹中.

    6. 打开MainPage.xaml 找到Home 链接按钮并在旁边再添加如下按钮<!-- XAML -->

    Code

    7. 运行后如下图

    clip_image008[4]

    3 添加业务逻辑到 .NET RIA Services 工程

    3.1 添加数据源

    1. 将AdventureWorks_Data.mdfAdventureWorks_Log.ldf添加到App_Data目录下

    2. 在web工程上右击添加新项ADO.NET Entity Data Model

    3. 命名为 AdventureWorks.edmx。

    clip_image010[4]

    4. 在实体模型向导中, 选择generate the Model 后Next.

    5. 选择 AdventureWorks 数据库 并设置实体集名称为 AdventureWorks_DataEntities.

    clip_image012[4]

    6. 为了简单起见,这里我们从所有表中选择Employee表作为实体模型. 设置命名空间为AdventureWorks_DataModel ,完成。

    clip_image014[4]

    7. 随后我们编译一下整个项目。

    3.2 添加Domain Service Object and Query for Data

    1. 在web工程上右击添加新建项(New Item)

    2. 选择Web分类下, Domain Service Class,命名为OrganizationService。

    clip_image016[4]

    3. 在弹出的对话框中选择实体集中的Employee 表, 选中 Enable editingGenerate associated classes for metadataEnable Client Access 三个CheckBox。

    clip_image018[4]

    4. 从刚建的服务类中,我们可以看到,因为选中了Enabled Edit,所以VS为我们加入了增,删,改等功能接口。

    5. 为了程序演示效果,我们让GetEmployee()返回已排序的对象列表。
    将下面代码:

    // C# 

    public IQueryable<Employee> GetEmployee() 

        
    return this.Context.Employee; 

    替换为

    // C# 
    public IQueryable<Employee> GetEmployee() 

          
    return this.Context.Employee.OrderBy(e => e.EmployeeID); 

    6. 按F6, 我们编译一下整个项目。(因为只有在每次编译时,.net Service 才会将DomainContext和所有实体对象类自动生成到客户端工程中)

    7. 打开 EmployeeList.xaml. 从工具箱拖动一个DataGrid控件xaml. 并放在TextBlock下方。并向客户端工程中手动添加System.Windows.Controls.Data引用,在xaml中添加

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


    如果是在Blend 中则可以直接拖动,不用麻烦了。构建成如下这样一个DataGrid。

    <data:DataGrid x:Name="dataGrid1" MinHeight="100" IsReadOnly="True"></data:DataGrid> 

    8. 打开EmployeeList.xaml.cs后台代码,加入下面的命名空间引用。

    // C# 
    using HRApp.Web; 
    using System.Windows.Ria.Data; 

    9. 当客户端自动生成服务类代码后,可以看到OrganizationContext 已经可以被智能识别了。那么怎样载入服务器端的数据呢并绑定到DataGrid呢?只需简单的几行代码。

    Code

    10. 按F5 运行程序,点击EmployeeList 按钮,可以看到DataGrid和加载的数据.

    clip_image020[4]

    3.2.1 使用DomainDataSource控件

    1. 在ASP.net中我们看到过LinqDataSource,在这里我们将添加一个新的控件DomainDataSource,其原理大致是一样的。

    2. 首先在客户端工程中需要添加程序集引用,System.Windows.Ria.Controls.dll

    3. 如果使用VS2005请如果没有请手动导入,在系统目录 ‘%ProgramFiles%\Microsoft SDKs\RIA Services\v1.0\Libraries\Silverlight’ 下 . clip_image022[4]

    4. 如果使用Blend 3.0开发,只需要拖动,在VS2008中要手动写界面代码。

    5. 在XAML文件中添加程序集引用

    <!-- XAML -->

    xmlns:ds="clr-namespace:HRApp.Web"

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

    6. 命名DomainDataSource 为employeeDataSource’ 并作如下设置

    Code

    7. 同时修改 DataGrid 代码:

    <data:DataGrid Height="Auto" MinHeight="100" IsReadOnly="True" ItemsSource="{Binding Data, ElementName=employeeDataSource}" 
    x:Name
    ="dataGrid1" /> 

    8. 代开 EmployeeList.xaml.cs ,将代码如下全部注释。和LinqDataSource是不是很像?哈哈

    Code

    9. 可以运行程序了,看看数据是否显示?It’s Great e, No Code!

    3.2.2 给数据源添加排序,过滤,分页功能

    1. 向EmployeeList.xaml:中添加引用

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

    2. SortDescriptorsDomainDataSource提供的专门用于排序的接口属性. 可以提供针对某个属性列上的排序,PropertyPath是对应的对象属性。

    Code

    3. 运行程序即可看到EmployeeList按VacationHours 升序.

    4. 下面看怎样使用过滤器.

    Code

    这里蓝色部分为过滤器提供了一个参数,这个参数值被绑定到一个TextBox控件的Text属性值。

    Operator为一个FilterOperator枚举类型.RefreshEventName是使用Filter更新后的回调函数,这里我们让文本框在按下回车后就自动更新。

    5. 运行程序,在“Min Vacation Hours Filter”旁的 TextBox中填入最小值,按回车。

    clip_image024[4]

    6. 下面我们给DataGrid 增加分页功能,从工具箱拖动一个 DataPager 控件EmployeeList.xaml.放在DataGrid的下面,

    <data:DataPager PageSize="5" Source="{Binding Data, ElementName=employeeDataSource}" Margin="0,-1,0,0"></data:DataPager>

    PageSize为页面大小,这里显示5行,并绑定数据。

    7. 运行程序点击 employee list 链接. 嘿嘿,效果不错。clip_image026[6]

    时间有限,今天就到译这里,下一篇将加入数据绑定及绑定验证。

  • 相关阅读:
    python之使用openpyxl从excel读取测试数据004
    python之编写HttpRequest工具类003
    python之cookies获取002
    OJ练习9——T20 valid parentheses
    OJ练习8——T19 remove nth node
    OJ练习7——T14 Longest Common Prefix
    OJ练习6——T8
    OJ练习5——T6
    OJ练习4——T7
    九度OJ-1351
  • 原文地址:https://www.cnblogs.com/ysisl/p/1594213.html
Copyright © 2011-2022 走看看