Silverlight托管客户端模型,是SharePoint2010推出的三种客户端模型“.NET托管”、“ECMAScript”、“Sliverlight”的一种,自己对于Silverlight也不是很熟悉,这也是第一次尝试Sliverlight,不过,我们主要尝试的是客户端模型调用SharePoint,而非Silverlight的功能。
首先,我们打开vs2010新建项目,选择silverlight – Silverlight application,选择.Net 3.5框架,输入我们的项目名称确定即可,弹出silverlight新建向导,这个我们不需要改什么设置,确定就可以了。然后,我们在Silverlight中添加对客户端模型支持的引用,位置在:TEMPLATE\LAYOUTS\ClientBin下的两个dll文件
Microsoft.SharePoint.Client.Silverlight.dll
Microsoft.SharePoint.Client.Silverlight.Runtime.dll
添加完引用,我们就可以编写我们的Silverlight程序了,我的例子就是通过Silverlight的客户端模型读取一个列表中的项目,然后显示到Silverlight的web部件中,试过了SharePoint2010推出的3中客户端对象模型,觉得使用差不多,一样是读取web,然后读取列表,读取列表项然后显示出来,同时,也需要先通过Load预读一下数据,然后再ExecuteQueryAsync才进行数据请求。而且,Silverlight的执行方式,是异步的。
相比SharePoint2007,新版本的2010对Silverlight的支持有了很大改善,我们将编译后的Silverlight程序,也就是debug里面的.xap文件上传到文档库中,然后添加Silverlight的Web部件,输入Silverlight文件的链接,就可以添加到SharePoint中了,如下图就是我的示例的展现效果。后面还有代码供大家参考,初次使用Silverlight,不足之处,欢迎大家指正。
Web web;
List list;
ListItemCollection listC;
private void button1_Click(object sender, RoutedEventArgs e)
{
ClientContext context = new ClientContext(ApplicationContext.Current.Url);
web = context.Web;
list = web.Lists.GetByTitle("MyFirstLists");
CamlQuery query = new CamlQuery();
query.ViewXml = "";
listC = list.GetItems(query);
context.Load(listC);
context.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(OnSuccessed),new
ClientRequestFailedEventHandler(OnFailed));
}
private void OnSuccessed(Object sender, ClientRequestSucceededEventArgs args)
{
this.Dispatcher.BeginInvoke(LoadData);
}
private void LoadData()
{
String str = "";
foreach (ListItem item2 in listC)
{
str += item2["Title"].ToString() + "\r\n";
}
label1.Content = str;
}
private void OnFailed(Object sender, ClientRequestFailedEventArgs args)
{
this.Dispatcher.BeginInvoke(delegate(){MessageBox.Show("Failed");});
}
……