最近一直在忙,感受到了因为需求不明确而导致的麻烦,时不时的要更改已经完成的部分程序。最近这两天用到一个很好用的控件。
WCF RIA Services 提供了DomainDataSource控件简化了用户界面和domain context中的数据的相互交互。
使用的时候类似于其它控件,相关的命名控件引用还是要添加的,
xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices"。这条引用在你使用绑定DomainDataSource的DataGrid 的时候会自动生成(在DataSources窗口中拖个对象过来也会自动生成),
xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 从工具箱中拖DataGrid的时候会自动生成。
最后手动添加个 xmlns:domain="clr-namespace:ExampleApplication.Web",其中ExampleApplication.Web是服务端项目名。
示例:
MainPage .xaml文件中代码
MainPage .cs文件中代码
//combobox绑定数据
DomainContext ctx=new DomainContext();
cmbStore.ItemsSource = ctx.Load(ctx.GetStoreQuery()).Entity;
//修改了其中的数据的话
MyTest.SubmitChanges();
//取消修改
MyTest,RejectChanges();
服务端.cs文件
public IQueryable<EntityName> MyTestQuery(DateTime? sDate, string No,string color,string store)
{
return //查询语句;
}
这样就全部完成了,没有写具体的分页存储过程,不需要写DataPage的扩展函数,即使查询语句的结果是上万条也没关系,客户端只具体load了LoadSize值大小的数据,想想之前为分页考虑那么多,现在很简单就搞定了。