Wcf Ria Services学习笔记(四):WCF RIA Service中的增删改查操作
2010-07-15 10:14
519 查看
本篇以DataForm控件,来说明下Wcf Ria Service中的增删改查操作。利用DataForm控件还是比较方便的!以Student实体为例,直接贴代码了,代码里附有一些注释!
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; //添加命名空间 using System.ServiceModel.DomainServices.Client; using ScoreManagement.Web; namespace ScoreManagement { enum ButtonModel { Edit, Add, Cancel } public partial class Test2 : UserControl { ButtonModel buttonModel = ButtonModel.Cancel; DomainService1 client = new DomainService1(); public Test2() { InitializeComponent(); this.Loaded += new RoutedEventHandler(StudentInfoManage_Loaded); } void StudentInfoManage_Loaded(object sender, RoutedEventArgs e) { //把一个entityset绑定到dataform,添加删除按钮均不可用是什么原因 //因为client.Students 是 EntitySet类型的,它并没有实现INotifyCollectionchanged以及iNotifyPropertyChanged接口。 //this.dataForm1.ItemsSource = client.Students; //client.Load(client.GetStudentsQuery()); //所以用如下方法: LoadOperation<Student> lo = client.Load(client.GetStudentsQuery()); lo.Completed += new EventHandler(lo_Completed); } void lo_Completed(object sender, EventArgs e) { dataForm1.CommitButtonContent = "保存"; dataForm1.CancelButtonContent = "取消"; dataForm1.AutoEdit = false; dataForm1.AutoCommit = true; LoadOperation<Student> lo = (LoadOperation<Student>)sender; //这里如果是 this.dataForm1.ItemsSource = lo.Entities,还是不能进行 “添加"和“删除”操作的.一定要ToList()下 dataForm1.ItemsSource = lo.Entities.ToList(); //dataForm1.CurrentItem = lo.Entities.FirstOrDefault(); dataForm1.DeletingItem += new EventHandler<System.ComponentModel.CancelEventArgs>(dataForm1_DeletingItem); dataForm1.EditEnded += new EventHandler<DataFormEditEndedEventArgs>(dataForm1_EditEnded); dataForm1.CommandButtonsVisibility = DataFormCommandButtonsVisibility.All; dataForm1.AddingNewItem+=new EventHandler<DataFormAddingNewItemEventArgs>(dataForm1_AddingNewItem); dataForm1.BeginningEdit += new EventHandler<System.ComponentModel.CancelEventArgs>(dataForm1_BeginningEdit); } //设置编辑模式 void dataForm1_BeginningEdit(object sender, System.ComponentModel.CancelEventArgs e) { buttonModel = ButtonModel.Edit; } //点"+"后的编辑模板,如果是“Commit”操作 void dataForm1_EditEnded(object sender, DataFormEditEndedEventArgs e) { //如果提交 把该项添加到数据库 if (e.EditAction == DataFormEditAction.Commit) { //添加 if (buttonModel == ButtonModel.Add) { Student student = dataForm1.CurrentItem as Student; client.Students.Add(student); client.SubmitChanges(); } //编辑 if (buttonModel == ButtonModel.Edit) { Student student = dataForm1.CurrentItem as Student; client.SubmitChanges(); } } //取消 if (e.EditAction == DataFormEditAction.Cancel) { buttonModel = ButtonModel.Cancel; } } //设置添加模式 void dataForm1_AddingNewItem(object sender, DataFormAddingNewItemEventArgs e) { //设置为添加模式 buttonModel = ButtonModel.Add; } //删除 void dataForm1_DeletingItem(object sender, System.ComponentModel.CancelEventArgs e) { //MessageBoxResult result= MessageBox.Show("你确定要删除该项吗?", "提示", MessageBoxButton.OKCancel); //if (result == MessageBoxResult.OK) //{ // //MessageBox.Show("恭喜你!删除成功!"); //} Student student = dataForm1.CurrentItem as Student; client.Students.Remove(student); client.SubmitChanges(OnSubmitCompleted, null); } //异常处理 public void OnSubmitCompleted(SubmitOperation so) { if (so.Error != null) { string message = so.Error.Message; if (so.EntitiesInError.Any()) { message = string.Empty; Entity entityError = so.EntitiesInError.First(); if (entityError.EntityConflict != null) { EntityConflict confict = entityError.EntityConflict; foreach (string s in confict.PropertyNames) { message += string.Format("Member '{0}' in confict /r/n", s); } } else if(entityError.ValidationErrors.Any()) { foreach (System.ComponentModel.DataAnnotations.ValidationResult vr in entityError.ValidationErrors) { message += string.Format("{0}/r/n",vr.ErrorMessage); } } } MessageBox.Show(message,"操作失败!",MessageBoxButton.OK); } } } }
相关文章推荐
- SilverLight使用WCF RIA SERVICE实现对数据库的操作 (添加,删除,更新)
- WCF Ria Service“操作失败,指定的命名链接在配置中找不到”错误解决方法
- [Silverlight]WCF RIA Services+Mef+MVVM实现CRUD(增删改查)示例
- 简单的Silverlight+MVVM+WCF Ria Service 对数据的增删改查DEMO
- python操作MySQL数据库(增删改查)
- 使用pymysql在python中对mysql的增删改查操作(二)
- phalcon Model模型的基本使用与常用操作(增删改查)
- php操作mysql数据库(增删改查)
- C语言,单链表操作(增删改查)(version 0.1)
- mongoVUE的增删改查操作使用说明(转)
- Android将sqlite数据库保存到SD卡以及数据库增删改查操作,模糊查询like or
- java代码LDAP操作(增删改查)AD(活动目录)- 添加
- hibernate之通过session来实现增删改查操作
- Dom4j对XML文档的增删改查操作
- SQLite 基本操作(增删改查)
- C#连接Oracle数据库(执行增删改查操作)
- tp基本的增删改查的操作demo
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作