WCF RIA 服务 (二十六)-- Silverlight 客户端 7
2010-04-08 14:13
344 查看
演练:编辑来自域服务的数据
当我们在域服务中添加了更新、插入或删除方法时,我们就可以在
Silverlight客户端创建一个接口来让用火修改数据。EntityChangesSet对象跟踪所有的改变,并且这些改变在我们调用
SubmitChanges方法时一起提交。
在这个演练中,我们将学习如何创建一个让用户修改所显示数据的接口,并且将这些修改保存到数据库。
演
练
1. 打开RIAServicesExample项目。(参见 WCF
RIA 服务 三
)
2.
在MainPage.xaml中,更改界面让用户可以保存或拒绝DataGrid中的更改。下面的XAML添加了一个Save
Changes按钮和Reject Changes按钮,以及一个更改文本框。
3.
在MainPage.xaml的后台代码文件中,添加按钮的点击事件处理方法、RowEditEnded事件的处理方法、一个名为
OnSubmitCompleted的回调方法,和一个处理行将发生的更改的方法。
为
要更改的实体设置元数据
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成员属性向客户端公开。
4.
用using添加所需的命名空间,例如
System.ComponentModel.DataAnnotations和System.Web.DomainServices.
5.
运行应用程序。
注意我们可以在DataGrid中编辑值了。当我们离开所编辑的行时,ChangeText的值将会变为行将发生的更改的描述。
当我们点击Save Changes按钮时,数据更改将会保存到数据库中。当点击Reject Changes按钮时,所有的行将发生的更改将恢复原样。
当我们在域服务中添加了更新、插入或删除方法时,我们就可以在
Silverlight客户端创建一个接口来让用火修改数据。EntityChangesSet对象跟踪所有的改变,并且这些改变在我们调用
SubmitChanges方法时一起提交。
在这个演练中,我们将学习如何创建一个让用户修改所显示数据的接口,并且将这些修改保存到数据库。
演
练
1. 打开RIAServicesExample项目。(参见 WCF
RIA 服务 三
)
2.
在MainPage.xaml中,更改界面让用户可以保存或拒绝DataGrid中的更改。下面的XAML添加了一个Save
Changes按钮和Reject Changes按钮,以及一个更改文本框。
<grid x:name="LayoutRoot" background="White"> <grid.rowdefinitions> <rowdefinition height="40"></rowdefinition> <rowdefinition height="*"></rowdefinition> </grid.rowdefinitions> <stackpanel horizontalalignment="Center" grid.row="0" orientation="Horizontal"> <button content="Save Changes" click="SaveButton_Click" margin="5" x:name="SaveButton"></button> <button content="Reject Changes" click="RejectButton_Click" margin="5" x:name="RejectButton"></button> <textblock x:name="ChangeText" verticalalignment="Center" width="Auto"></textblock> </stackpanel> <datac:datagrid grid.row="1" name="CustomerGrid" roweditended="CustomerGrid_RowEditEnded"></datac:datagrid> </grid>
3.
在MainPage.xaml的后台代码文件中,添加按钮的点击事件处理方法、RowEditEnded事件的处理方法、一个名为
OnSubmitCompleted的回调方法,和一个处理行将发生的更改的方法。
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成员属性向客户端公开。
[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按钮时,所有的行将发生的更改将恢复原样。
相关文章推荐
- WCF RIA 服务 (二十六)-- Silverlight 客户端 7
- WCF RIA 服务 (二十六)-- Silverlight 客户端 7
- Silverlight WCF RIA服务(二十六)Silverlight 客户端 7
- Silverlight WCF RIA服务(二十三)Silverlight 客户端 4
- WCF RIA 服务 (二十二)-- Silverlight 客户端 3
- WCF RIA 服务 (二十五)-- Silverlight 客户端 6
- WCF RIA 服务 (二十四)-- Silverlight 客户端 5
- Silverlight WCF RIA服务(二十四)Silverlight 客户端 5
- WCF RIA 服务 (二十三)-- Silverlight 客户端 4
- WCF RIA 服务 (二十七)-- Silverlight 客户端 8
- WCF RIA 服务 (二十五)-- Silverlight 客户端 6
- Silverlight WCF RIA服务(二十三)Silverlight 客户端 4
- Silverlight WCF RIA服务(二十五)Silverlight 客户端 6
- WCF RIA 服务 (二十八)-- Silverlight 客户端 9
- WCF RIA 服务 (二十七)-- Silverlight 客户端 8
- Silverlight WCF RIA服务(二十一)Silverlight 客户端 2
- WCF RIA 服务 (二十四)-- Silverlight 客户端 5
- WCF RIA 服务 (二十九)-- Silverlight 客户端 10
- Silverlight WCF RIA服务(二十七)Silverlight 客户端 8
- WCF RIA 服务 (二十)-- Silverlight 客户端