关于EF、SL、DomainDataSource的说明园子上够多了,这儿就不多说了。

1.安装VS2010与Silverlight 4 Tools……

2.打开VS2010,新键Silverlight项目,如图一所示:

图1.新键项目

注:请选中"启用WCF RIA服务"的CheckBox.

建立好项目后,解决方案里的文件如图2所示:

图2.解决方案文件结构

3.在SilverlightApplication.Web里,添加Entity Framework的数据库映射文件,这儿我以自己数据库的一个表所为示例,如图3与图3所示:

图3.新建"Ado.Net实体数据模型"

图4.从数据库生成模型

图5.选择要映射的数据库

图6.从数据库选择要映射的对象

图7.映射完成

4.在添加完数据库映射文件后,对项目进行一次编译(快捷键F6),才能让第5步要添加的Domain Service Class读取到相关的EF实体类。

5.添加Domain Service Class(图8),通过Domain Service Class,SL就可以与服务器进行通信,替代了原来的WCF作为中间层的解决方案,并选择相关的表与权限(图9)。

图8.添加Domain Service Class

图9.选择Domain Service Class可操作的表

到此,前期准备工作完成。下面,我们就开始对SL的页面进行布局、放控件等操作。

6.布局页面,页面上的控件有:一个DataGrid,一个DataPager,两个Button(一个确定更改一个取消更改),并设置DataGrid的列信息。布局图如图10,代码请代码1。

图10.页面布局

XAML

<UserControl x:Class="SilverlightApplication.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

<Grid x:Name="LayoutRoot" Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="60" />
<ColumnDefinition Width="60" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="25" />
</Grid.RowDefinitions>
<sdk:DataGrid AutoGenerateColumns="False" Grid.ColumnSpan="3" Name="dataGrid1">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="标识" Binding="{Binding ID,Mode=TwoWay}" />
<sdk:DataGridTextColumn Header="国家" Binding="{Binding Country,Mode=TwoWay}" Width="*" />
<sdk:DataGridTextColumn Header="省份" Binding="{Binding Province,Mode=TwoWay}" />
<sdk:DataGridTextColumn Header="市/区" Binding="{Binding City,Mode=TwoWay}" />
<sdk:DataGridTextColumn Header="地域" Binding="{Binding Area,Mode=TwoWay}" />
<sdk:DataGridTextColumn Header="邮编" Binding="{Binding PostCode,Mode=TwoWay}" />
<sdk:DataGridTextColumn Header="区域码" Binding="{Binding AreaCode,Mode=TwoWay}" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<sdk:DataPager Grid.Row="1" Name="dataPager1" PageSize="10" />
<Button Content="提交修改" Grid.Column="1" Grid.Row="1" Name="btnSubmit" />
<Button Content="取消修改" Grid.Column="2" Grid.Row="1" Name="btnCancl" />
</Grid>
</UserControl>

代码1.XAML

7.下面,有请我们今天的重点:Domain Data Source控件。要使用Domain Data Source控件,我们需要将它引入XAML中来以便使用,在UserControl节加入以下绿色代码(注:xmlns:ds所引入的命名空间根据个人所建立项目名不同有所不同。即:引入Web层所在的命名空间):

<UserControl x:Class="SilverlightApplication.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"

xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices"
    xmlns:ds="clr-namespace:SilverlightApplication.Web"

    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

8.在页面中加入Domain Data Source控件,重点属性是QueryName属性,此属性对应DomainSerivceClass里的方法名,即:要查询的表。方法名一般为:Get[TableName]Query。同时我们还要设置相关的Domain Service Class,默认排序方式设置可选。相关Xaml代码如代码2:

Domain Data Source

<my:DomainDataSource Name="dds" QueryName="GetRegionQuery" AutoLoad="True">
<my:DomainDataSource.DomainContext> <!--设置相关Domain Service-->
<ds:SSMContext />
</my:DomainDataSource.DomainContext>
<my:DomainDataSource.SortDescriptors>
<my:SortDescriptor PropertyPath="ID" Direction="Descending" /> <!--设置默认排序方式-->
</my:DomainDataSource.SortDescriptors>
</my:DomainDataSource>

代码2.Domain Data Source

好了,下们我们Ctrl+F5运行下页面,吁?什么数据都没有?

噢!!!我们还没有进数据进行Binding。来吧,设置数据绑定。

我们需要把Domain Data Source的Data属性绑定到DataGrid的ItemSource与DataPager的Source属性上,即:

代码

.....................
<sdk:DataGrid ItemsSource="{Binding Data, ElementName=dds}"
.....................
.....................
<sdk:DataPager Source="{Binding Data, ElementName=dds}"
.....................
.....................

Ctrl+F5一下看下效果~哎呀,全部出来了~!排序、分页、编辑一切正常!

图12.运行效果

但是,在编辑后,数据是不会入库的,这里,我们只需要调用一个方法:DomainDataSource.SubmitChanges(),于是,我们对提交修改与取消修改的点击事件产生如下代码:

代码

private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
if (MessageBox.Show("确认提交更改?", "提示", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
{
this.dds.DomainContext.SubmitChanges();
}
}

private void btnReject_Click(object sender, RoutedEventArgs e)
{
if (MessageBox.Show("确认取消更改?", "提示", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
{
this.dds.DomainContext.RejectChanges();
}
}

代码3

运行起来:全部OK!强大的Domain Data Source控件与Domain Data Class啊!!!

DEMO与数据库备份文件下载请点我

转载于:https://www.cnblogs.com/leehom0123/archive/2010/07/09/1774432.html

EntityFramework+DomainDataSource+Silverlight完成数据读取分页排序与修改相关推荐

  1. PHP排序大数据量分页

    大数据量分页,除了使用mysql的limit 排序,也可以使用php排序,来实现业务. limit a,b 的取数据方式是,先取出a+b条数据,再把a条筛选掉,剩b条,相当于一次性要取a+b条的数据, ...

  2. 千万级别数据查询优化_MySQL大数据量分页查询方法及其优化

    MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...

  3. 我要学ASP.NET MVC 3.0(十六): MVC 3.0 实例系列之表格数据的分页

    概述 上节我们学习了如何在MVC 3应用程序中实现一个简单表格并在表格之中加上了排序的表头,使我们的表格在使用起了更加人性化,这些都是使用了MVC 3.0的相关特性来完成的. 我们在程序中添加了一个辅 ...

  4. mysql一样的查询在我本地很快但是线上很慢_MySQL大数据量分页查询方法及其优化...

    MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...

  5. MySQL 和 Oracle 大数据量分页查询方法及其优化

    MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...

  6. SSH + Lucene + 分页 + 排序 + 高亮 模拟简略新闻网站搜索引擎

    SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎 任务是实现Struts2 SSH分页浏览新闻.Lucene分页高亮排序搜索新闻这个两个功能. com.zly.inde ...

  7. 应用displaytag完成大数据量分页显示的例子

    应用displaytag在struts中完成大数据量分页显示,Oracle数据库 JSP文件: <%...@ taglib uri="/WEB-INF/displaytag.tld&q ...

  8. layui一个表格中怎么接两个接口的值_layer学习笔记之table表格引入数据实现分页...

    LayUI是一款免费,开源,轻量级的前端cms框架,适用于企业后端,能快速上手开发,集成了常用的组件,还有完善的文档和社区. 最近一直在学习使用layer的layui框架技术,这个主要表现在于弹出层的 ...

  9. ASP.NET 2.0数据处理之高级分页/排序

    GridView控件中的"选择"操作纯粹是一个UI概念,它的SelectedIndex属性与表格的可视数据行中的当前被选中的行的索引相对应.如果你启用了表格的分页和排序功能,在执行 ...

最新文章

  1. 荣耀有鸿蒙手机吗,荣耀手机也能升鸿蒙!这5款机型用户有福了
  2. spring vo是什么_DO、VO、DTO...XXOO,你弄明白了么
  3. VTK:Snippets之RestoreSceneFromFile
  4. linux 格式化 目录,Linux 磁盘分区、格式化、目录挂载
  5. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 词向量
  6. Android学习笔记(24):进度条组件ProgressBar及其子类
  7. 错误记录(12):No 'Access-Control-Allow-Origin' header is present on the requested resource.
  8. js系列教程1-数组操作全解
  9. shell获取git最近一次提交信息_我低估了PowerShell:一个提取Git提交记录并生成文件Diff列表的脚本案例...
  10. 做IT项目经理什么要求?
  11. 小武学fpgastep5
  12. ESP8266 系统环境搭建
  13. Java项目:springboot在线心理咨询系统
  14. 使用winsockfix修复网络正常但无法浏览网页
  15. 仰慕 Queens,先从 OpenStack Cinder 开始吧!
  16. macos使用ffpmeg批量mp4转mp3
  17. SP706_MCU监控芯片
  18. 第四周项目2长方形面积
  19. 漫漫Java学习路,第七天
  20. matlab ellip传递函数,BPSK和QPSK调制解调原理及MATLAB程序

热门文章

  1. 王茂霖:数据挖掘提分三板斧!
  2. 工业缺陷检测比赛Top3方案
  3. SparkStreaming靠什么征服了字节跳动?
  4. 深度学习三巨头也成了大眼萌,这个一键转换动画电影形象的网站竟因「太火」而下线...
  5. 南方人过年 VS 北方人过年
  6. 百度“已死”,百度“真香”
  7. 瓶框(bottle)架学习之模版使用
  8. 反编译与反汇编、C++编译过程,包括预编译--汇编--编译--链接
  9. 汇编语言(王爽 第三版)检测点9.1 解决-a无法输入jmp dword ptr es:[1000h]
  10. 人工智能及其应用(第5版).蔡自兴-5章课后习题。【部分答案】