Silverlight WCF RIA服务(二十六)Silverlight 客户端 7

Silverlight WCF RIA服务(二十六)Silverlight 客户端 7,第1张

概述演练:编辑来自域服务的数据 当我们在域服务中添加了更新、插入或删除方法时,我们就可以在Silverlight客户端创建一个接口来让用火修改数据。EntityChangesSet对象跟踪所有的改变,并且这些改变在我们调用SubmitChanges方法时一起提交。 在这个演练中,我们将学习如何创建一个让用户修改所显示数据的接口,并且将这些修改保存到数据库。 演练 1. 打开RIAServicesExa

演练:编辑来自域服务的数据
当我们在域服务中添加了更新、插入或删除方法时,我们就可以在Silverlight客户端创建一个接口来让用火修改数据。EntityChangesSet对象跟踪所有的改变,并且这些改变在我们调用submitChanges方法时一起提交。
在这个演练中,我们将学习如何创建一个让用户修改所显示数据的接口,并且将这些修改保存到数据库。

演练

1. 打开RIAServicesExample项目。(参见 WCF RIA 服务 三)
2. 在MainPage.xaml中,更改界面让用户可以保存或拒绝DataGrID中的更改。下面的XAML添加了一个Save Changes按钮和Reject Changes按钮,以及一个更改文本框。
 

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <GRID x:name="LayoutRoot" Background="White">     <GRID.ROWDEFinitioNS>         <ROWDEFinitioN Height="40"></ROWDEFinitioN>         <ROWDEFinitioN Height="*"></ROWDEFinitioN>     </GRID.ROWDEFinitioNS>     <STACKPANEL GrID.Row="0" OrIEntation="Horizontal" HorizontalAlignment="Center">         <button x:name="Savebutton" margin="5" Content="Save Changes" Click="Savebutton_Click"></button>         <button x:name="Rejectbutton" margin="5" Content="Reject Changes" Click="Rejectbutton_Click"></button>         <TEXTBLOCK x:name="ChangeText" VerticalAlignment="Center" WIDth="auto"></TEXTBLOCK>     </STACKPANEL>     <DATAC:DATAGRID name="CustomerGrID" GrID.Row="1" RowEditEnded="CustomerGrID_RowEditEnded"></DATAC:DATAGRID> </GRID>



3. 在MainPage.xaml的后台代码文件中,添加按钮的点击事件处理方法、RowEditEnded事件的处理方法、一个名为OnsubmitCompleted的回调方法,和一个处理行将发生的更改的方法。
 

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 private voID Savebutton_Click(object sender,RoutedEventArgs e) {     _customerContext.submitChanges(OnsubmitCompleted,null); }   private voID Rejectbutton_Click(object sender,RoutedEventArgs e) {     _customerContext.RejectChanges();     CheckChanges(); }   private voID CustomerGrID_RowEditEnded(object sender,DataGrIDRowEditEndedEventArgs e) {     CheckChanges(); }   private voID CheckChanges() {     EntityChangeSet changeSet = _customerContext.EntityContainer.GetChanges();     ChangeText.Text = changeSet.ToString();       bool hasChanges = _customerContext.HasChanges;     Savebutton.IsEnabled = hasChanges;     Rejectbutton.IsEnabled = hasChanges; }   private voID OnsubmitCompleted(submitOperation so) {     if (so.HasError)     {         MessageBox.Show(string.Format("submit Failed: {0}",so.Error.Message));         so.MarkErrorAsHandled();     }     CheckChanges(); }



为要更改的实体设置元数据

1. 在服务端项目中,为Customer实体手动添加一个名为Customer.Metadata.cs的元数据类。
2. 在元数据类中,对CustomerID和ModifIEdData成员属性添加EditableAttribute属性并设置AllowEdit属性为false。我们对成员属性应用EditableAttribute来指定是否想让这个成员属性在客户端让用户编辑。当我们将AllowEdit为false时,这个成员属性在客户端是只读的。在这个例子中,我们只想显示CustomeID和ModifIEdDate成员属性而不想用户修改它们。
3. 添加ExcludeAttribute属性给PasswordHash,PasswordSalt和rowguID成员属性。我们对不想包含客户端生成代码中的成员属性使用ExcludeAttribute。在这个例子中,我们没有必要把PasswordHash,PasswordSalt和rowguID成员属性向客户端公开。
 

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [MetadataTypeAttribute(typeof(Customer.CustomerMetadata))] public partial class Customer {     internal sealed class CustomerMetadata     {           // Metadata classes are not meant to be instantiated.         private CustomerMetadata()         {         }           [Editable(false)]         public int CustomerID;           [Editable(false)]         public DateTime ModifIEdDate;           [Exclude]         public string PasswordHash;           [Exclude]         public string PasswordSalt;           [Exclude]         public GuID rowguID;       } }

4. 用using添加所需的命名空间,例如 System.ComponentModel.DataAnnotations和System.Web.domainservices. 5. 运行应用程序。 注意我们可以在DataGrID中编辑值了。当我们离开所编辑的行时,ChangeText的值将会变为行将发生的更改的描述。当我们点击Save Changes按钮时,数据更改将会保存到数据库中。当点击Reject Changes按钮时,所有的行将发生的更改将恢复原样。

总结

以上是内存溢出为你收集整理的Silverlight WCF RIA服务(二十六)Silverlight 客户端 7全部内容,希望文章能够帮你解决Silverlight WCF RIA服务(二十六)Silverlight 客户端 7所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1065712.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存