SP2010开发和VS2010专家"食谱"--第七章节--使用客户端对象模型(5)--Using a Silverlight Object Model
Silverlight是一个开发平台,用来开发富Internet应用程序,跨浏览器、跨平台兼容。Silverlight应用程序可以通过一个浏览器插件执行,意味着它可以在客户机的IE中运行。通过使用Silverlight和SharePoint作为数据源,你可以为用户开发视觉上引人的客户端。本次食谱中,我们使用Silverlight创建一个Silverlight应用程序。像之前的食谱一样,此应用程序将显示来自联系人列表的列表项目。
Getting ready
之前的食谱必须被成功完成。另外,在你的网站创建一个新的文档库XAPFiles。How to do it...
为了使用Silverllight对象模型,请遵循下面步骤:1. 以管理员身份打开VS。
2. 创建新空白SP项目SilverlightOM,接受后面步骤的默认。
3. 添加新Silverlight应用程序ContactsListSilverlight。
4. 添加新模块,命名XAPFiles。
5. 删除Sample.txt文件。Elements.xml文件将会自动更新。
6. 在属性窗口,点击Project Output References:
7. 这会打开Project Output References窗口。点击添加按钮,将ContactsListSilverlight项目作为成员,设置Deployment Type为ElementFile。
8. VS自动更新模块中元素文件。打开模块中Elements.xml文件,添加一个URL属性到Module元素,设置其值为文档库名。这里是XAPFiles。添加Type属性到文件元素,设置为GhostableInLibrary。现在你的Elements.xml文件应该是这样的:
10. 添加一个datagrid和按钮到MainPage.xaml,你的XAML文件应该是这样的:
namespace ContactsListSilverlight
{
public class MyContacts
{
public string LastName { get; set; }
public string FirstName { get; set; }
public string BusinessPhone { get; set; }
public string EmailAddress { get; set; }
}
public partial class MainPage : UserControl
{
private Microsoft.SharePoint.Client.Web _web;
private Microsoft.SharePoint.Client.List _list;
private ListItemCollection _listItemCol;
public MainPage()
{
InitializeComponent();
}
private void button1_Click(object sender,RoutedEventArgs e)
{
ClientContext context = new ClientContext(ApplicationContext.Current.Url);
_web = context.Web;
context.Load(_web);
_list = _web.Lists.GetByTitle("Contacts");
var query = new CamlQuery();
var rowLimit = "
5
";
query.ViewXml = rowLimit;
_listItemCol = _list.GetItems(query);
context.Load(_listItemCol);
context.Load(_list);
context.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(OnSuccessRequest), new ClientRequestFailedEventHandler(
OnFailedRequest));
}
private void OnSuccessRequest(Object sender,ClientRequestSucceededEventArgs args)
{
Dispatcher.BeginInvoke(FillGrid);
}
private void OnFailedRequest(Object sender,ClientRequestFailedEventArgs args)
{
MessageBox.Show("Request Failed: " + args.Message + ",Stack Trace:" + args.StackTrace);
}
private void FillGrid()
{
List
_myContacts = new List
();
foreach(ListItem item in _listItemCol)
{
_myContacts.Add(new MyContacts
{
LastName = item["Title"].ToString(),
FirstName = item["FirstName"].ToString(),
BusinessPhone = item["WorkPhone"].ToString(),
EmailAddress = item["Email"].ToString()
});
}
dataGrid1.ItemsSource = _myContacts;
}
}
}
13. 添加Silverlight WebPart到页面,提供XAP文件的URL如下:
14. Silverlight WebPart输出如下:
How it works...
Silverlight对象模型中类和方法和托管、JS对象模型类似。Silverlight中程序使用异步执行(像JS一样)。代码也和JS菜谱中差不多。与JS OM相似,我们为SuccessRequest和FailedRequest定义事件处理器。我们也有回调方法用联系人填充grid。无论什么时候使用客户端对象模型创建Silverlight应用程序,你都将遵循此步骤。
There's more...
Silverlight应用程序中错误处理和其他两个方法遵循相同模式。你可以使用ExceptionScopeHandling(修改的try和catch块)。See also
- 使用客户端对象模型创建列表菜谱;
- 处理异常菜谱;
- 使用JS对象模型菜谱。