Silverlight3端操作数据库(5)

在silverlight中,数据的展示和操作有很多种方式,这里只介绍简单的方法,以达到让初学者有一个概念性的理解和认识,如果你对更高层次的应用有兴趣可以到本站论坛http://funsl.eblhost.cn/drupal/forum进行讨论。

1.silverlight项目中的命名空间引用,请对下照下图引用相应命名空间:

image

2.以下是MainPage.xaml的内容:

 1:  <UserControl
 2:      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
 3:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4:      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
 5:      mc:Ignorable="d" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="funsl.com.MainPage"
 6:      d:DesignWidth="640" d:DesignHeight="480">
 7:    <Grid x:Name="LayoutRoot">
 8:        <data:DataGrid x:Name="GirdView1" Margin="116,88,236,193"/>
 9:        <Button x:Name="bt_add" Height="31" HorizontalAlignment="Left" Margin="60,0,0,109" VerticalAlignment="Bottom" Width="118" Content="添加"/>
10:        <Button x:Name="bt_edit" Height="31" Margin="214,0,308,109" VerticalAlignment="Bottom" Content="修改"/>
11:        <Button x:Name="bt_del" Height="31" HorizontalAlignment="Right" Margin="0,0,151,109" VerticalAlignment="Bottom" Width="118" Content="删除"/>
12:    </Grid>
13:  </UserControl>

定义了一个Gridview控件用来显示数据,三个按扭控件分别是添加、修改、删除。

3.以下是MainPage.xaml.cs文件代码部份。也就是我们开始通过.net ria service操作数据库了。

 1:  using System;
 2:  using System.Collections.Generic;
 3:  using System.Linq;
 4:  using System.Net;
 5:  using System.Windows;
 6:  using System.Windows.Controls;
 7:  using System.Windows.Documents;
 8:  using System.Windows.Input;
 9:  using System.Windows.Media;
10:  using System.Windows.Media.Animation;
11:  using System.Windows.Shapes;
12:  //引用funsl.com.web空间
13:  using funsl.com.Web;
14:   
15:  namespace funsl.com
16:  {
17:      public partial class MainPage : UserControl
18:      {
19:          //定义一个Domain Data Class,即是我们之有在funsl.com.Web里定义的那个
20:          FunSLDomainContext funSLContext;
21:   
22:          public MainPage()
23:          {
24:              InitializeComponent();
25:   
26:              //实例化FunSLDomainContext
27:              funSLContext = new FunSLDomainContext();
28:   
29:              LoadDataAndDisplay();
30:   
31:              //注册添加功能的button点击事件
32:              bt_add.Click += new RoutedEventHandler(bt_add_Click);
33:              //注册修改功能的button点击事件
34:              bt_edit.Click += new RoutedEventHandler(bt_edit_Click);
35:              //注册删除功能的button点击事情
36:              bt_del.Click += new RoutedEventHandler(bt_del_Click);
37:   
38:          }
39:   
40:          //此方法为显示所有数据
41:          void LoadDataAndDisplay()
42:          {
43:              //把gridview控件的数据源与DomainContext绑定
44:              GirdView1.ItemsSource = funSLContext.FunSLUsers;
45:              //开始开载数据
46:              funSLContext.Load(funSLContext.GetFunSLUsersQuery());
47:          }
48:   
49:          //添加工作
50:          void bt_add_Click(object sender, RoutedEventArgs e)
51:          {
52:              //新建一个FunSLUsers并设定相关值,不同的资料请自行修改
53:              FunSLUsers newUser = new FunSLUsers();
54:              newUser.userId = "FunSl.User";
55:              newUser.age = 25;
56:              newUser.address = "HK";
57:   
58:              //把新的FunSLUsers添加到DomainContext中
59:              funSLContext.FunSLUsers.Add(newUser);
60:              //把DomainContext的变动更新到数据库
61:              funSLContext.SubmitChanges();
62:   
63:              //提示
64:              MessageBox.Show("提交完成");
65:          }
66:   
67:          //修改工作
68:          void bt_edit_Click(object sender, RoutedEventArgs e)
69:          {
70:              //重选中的dataview中还原FunSlUsers实例
71:              FunSLUsers user = (FunSLUsers)GirdView1.SelectedItem;
72:   
73:              //这里我要修改选中用户的userId为eidted
74:              user.userId = "edited";
75:   
76:              //把修改变动更新到数据库
77:              funSLContext.SubmitChanges();
78:   
79:              //提示
80:              MessageBox.Show("修改完成");
81:          }
82:   
83:          //删除工作
84:          void bt_del_Click(object sender, RoutedEventArgs e)
85:          {
86:              //重选中的dataview中还原FunSlUsers实例
87:              FunSLUsers user = (FunSLUsers)GirdView1.SelectedItem;
88:   
89:              //从DomainContext中移除user
90:              funSLContext.FunSLUsers.Remove(user);
91:   
92:              //把修改变动更新到数据库
93:              funSLContext.SubmitChanges();
94:          }
95:      }
96:  }

到此基本的应用已经完成,须然还有很我.net ria service的特性没有讲述,监于本系列是专为初学者入门而写,所以不想作更多复杂的讲述,希望本系列文章可以为.net ria serivce入门的朋友有所帮助。

登陆后可直接下从附件中下载源码

欢迎您参与更多关于此话题的讨论,本文原创地址为:http://funsl.com

评论

jackymaps
jackymaps 的头像
User offline. Last seen 44 周 6 天 ago. Offline
Joined: 01/04/2011
你好,关于多表操作的问题

你好,关于多表操作的问题,现有2个表是1对1的关系
Users:UserName,Password
Persons:UserName,PersonID,PersonName
在前端界面我怎样用一个dataform同显示2个表字段:UserName,Password,PersonID,PersonName 就是2个动作:首先从2个表拿出数据绑定到界面,然后修改后保存。老大我应该怎样实现它呢?

黎东海
黎东海 的头像
User offline. Last seen 8 小时 36 分钟 ago. Offline
Joined: 09/13/2009
re:jack

查查datafrom的detail之类的属性。我记得datagrid是有的。不过dataform有没有我忘记了。太久没有玩数据库了。

tomallen
tomallen 的头像
User offline. Last seen 1 年 22 周 ago. Offline
Joined: 07/13/2010
出错了...

错误 1 未能从程序集“System.Web.DomainServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”中加载类型“System.Web.Ria.Data.ExternalAttribute”。 funsl.com

是怎么回事?

黎东海
黎东海 的头像
User offline. Last seen 8 小时 36 分钟 ago. Offline
Joined: 09/13/2009
re:tomallen

可能你的wcf ria services版本不相配。假如你换了更新的silverlight版本,请按相应的程序集引用添加上。

tomallen
tomallen 的头像
User offline. Last seen 1 年 22 周 ago. Offline
Joined: 07/13/2010
我的版本是:vs2008+sl3.0

RiaService 版本号为:{640349A7-E635-4A74-ABD5-3B2A94F1C6CC};

刚开始我也估计是版本问题 我是昨天才在微软下的RiaService补丁,大小为:4.02Mb

黎东海
黎东海 的头像
User offline. Last seen 8 小时 36 分钟 ago. Offline
Joined: 09/13/2009
re:tomallen

主要还是dll的问题,你要确认错误提示的dll被正常引用,或确定已经引用到项目中,或版本必须相符。这种错误提示一般都是因为这些原因。由于我已经很久没用vs08,这种和编译环境有关的错误给不了你太多好的建议,不好意思!

temperzz
temperzz 的头像
User offline. Last seen 1 年 34 周 ago. Offline
Joined: 05/13/2010
12: //引用funsl.com.web空间 13:

12: //引用funsl.com.web空间
13: using funsl.com.Web;

這個引用是如何加進去的...

偶的環境是Silverlight 3 + Vs2008
有裝.NetRiaServices

能說一下嘛?

黎东海
黎东海 的头像
User offline. Last seen 8 小时 36 分钟 ago. Offline
Joined: 09/13/2009
re:temperzz

1.首先确定你新建项目时选择了启用ria services.
2.如果那个引用没有自动加进去,请手动添加。funsl.com是web项目的主命名空间。你可以改为你自己项目的实际web项目的主命名空间。

temperzz
temperzz 的头像
User offline. Last seen 1 年 34 周 ago. Offline
Joined: 05/13/2010
謝謝你的回覆... >>1.首先确定你新建项目时选择了启用

謝謝你的回覆...
>>1.首先确定你新建项目时选择了启用ria services.
應該是我在新建項目時沒有把啟用ria services的勾給打上...

那我如何在已經建好的項目里修改這一個設置呢? 謝謝

黎东海
黎东海 的头像
User offline. Last seen 8 小时 36 分钟 ago. Offline
Joined: 09/13/2009
re:temperzz

除非你没有安装wcf ria services。如果安装了,在新建项目的时候有一个对话框,对话框的下方就有一个“启动ria server "的checkbox,你钩上就行了。

abis
abis 的头像
User offline. Last seen 1 年 38 周 ago. Offline
Joined: 01/08/2010
请问如何查询得到实体

表"t_dict_hydm_xl"

Xlcode XlName

01 油料的种植
02 豆类的种植
03 棉花的种植
04 麻类的种植
05 烟草的种植

... ....

请问如何查到Xlcode为“04”的那条记录的实体?小弟初学,请给出完速的代码,谢谢