RIA Service的增强让Silverlight 4的数据展示和更新功能更加强大。
我目前没有深入的去研究下RIA Services,在接下来的文章里我会和大家分享学习RIA Services的过程,以及它的迷人之处。
这篇文章中我会针对商业应用,结合项目经验来研究下SL4和RIA Services。
这里我已经创建好一个SL Bussiness Application的模板。
先不添加页面,就是用它的Home.xaml开始。
1. 去掉页面所有的控件除了Root的那个Grid。然后为它定义4,5行。添加一个DataGrid和一个Pager。如下图:
![](http://www.silverlightchina.net/uploads/allimg/100615/105503E31-0.gif)
2. RIA Services的创建。这里不再去扯了:
![](http://www.silverlightchina.net/uploads/allimg/100615/1055031237-1.gif)
3. 这次安装好VS2010后终于能在Data Sources中看到RIA Service了。所以不用费那么大劲去写代码了,直接Drag – Drop ,。。。
![](http://www.silverlightchina.net/uploads/allimg/100615/1055033340-2.gif)
4. 然后为DataPager绑定数据,并设置每页显示10条记录。
绑定好以后我运行了下,竟然提示要有个Order By,,,,查了下发现需要在Domain Service中添加Order By。
然后运行:
![](http://www.silverlightchina.net/uploads/allimg/100615/1055033024-3.gif)
Domain Service中可以添加一个Filter,也就是说你可以放一个Textbox,然后指定哪一列应该通过你输入这个Textbox中的字符来显示符合条件的结果。
这里我们就得手动定义显示的列了,不能用自动生成的列来使用Filter。
<sdk:DataGridTextColumn x:Name="addressColumn" Binding="{Binding Path=Address}" Header="Address" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="cityColumn" Binding="{Binding Path=City}" Header="City" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="contactNameColumn" Binding="{Binding Path=ContactName}" Header="Contact Name" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="contactTitleColumn" Binding="{Binding Path=ContactTitle}" Header="Contact Title" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="faxColumn" Binding="{Binding Path=Fax}" Header="Fax" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="homePageColumn" Binding="{Binding Path=HomePage}" Header="Home Page" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="iDColumn" Binding="{Binding Path=ID}" Header="ID" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="imagePathColumn" Binding="{Binding Path=ImagePath}" Header="Image Path" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="nameColumn" Binding="{Binding Path=Name}" Header="Name" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="phoneColumn" Binding="{Binding Path=Phone}" Header="Phone" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="postalCodeColumn" Binding="{Binding Path=PostalCode}" Header="Postal Code" Width="SizeToHeader" />
<sdk:DataGridTextColumn x:Name="regionColumn" Binding="{Binding Path=Region}" Header="Region" Width="SizeToHeader" />
<datagrid>的AutoGenerateColumns="False",然后是设定Filter:
![](http://www.silverlightchina.net/uploads/allimg/100615/10550362N-4.gif)
![](http://www.silverlightchina.net/uploads/allimg/100615/1055032D4-5.gif)
如果需要这个textbox去控制多个列的搜索,就再添加几个select item,你只需修改PropertyPath。
然后运行下:
![](http://www.silverlightchina.net/uploads/allimg/100615/1055036107-6.gif)
6. 搜索功能有了,下一个就是单条记录的更新和新增功能了。明天给大家展示。