SharePoint开发笔记为SharePoint2010客户端对象模型创建Silverlight应用程序

 

此为微软官方的练习,本人只是做了一些易错地方的说明.

在此练习中,我们将创建一个在数据网格中显示 SharePoint 列表的基本 Silverlight 应用程序。列表的数据从服务器检索,因此可用于使用 SharePoint 客户端对象模型的 Silverlight。我们将使用 Visual Studio 2010 解决方案并将其部署到本地 SharePoint 服务器。

任务 1 ― 创建 Silverlight 应用程序项目
我们将首先创建一个标准 Silverlight 应用程序项目。
1. 从“开始”|“所有程序”|“Microsoft Visual Studio 2010”|“Microsoft Visual Studio 2010”打开 Visual Studio 2010。
2. 从菜单中,选择“文件”|“新建”|“项目”。
3. 在“新建项目”对话框中,展开“已安装的模板”左侧菜单的“其他项目类型”|“Visual Studio 解决方案”|“空白解决方案”。
4. 选择“.NET Framework 3.5”
5. 将解决方案命名为 Begin。
6. 在“位置”文本框中输入 C:\SPHOLS\SPCHOL306\CS\Ex1\。

图 47 - “新建项目”对话框

7. 按“确定”继续。
8. 从菜单中,选择“文件”|“添加”|“新项目”。
9. 在“添加新项目”对话框中,展开“已安装的模板”左侧菜单的“Visual C#”|“Silverlight”, 然后在屏幕中间部分的项目类型列表中选择“Silverlight 应用程序”项目类型。
10. 选择“.NET Framework 3.5”
11. 将项目命名为 SPSilverlightExample。
12. 位置保留不变。

图 48 - “添加新项目”对话框
13. 按“确定”继续。

图 49 - 添加 Silverlight 应用程序对话框
14. 按“确定”创建项目。
15. 在 SPSilverlightExample 项目中,我们现在将添加 SharePoint Silverlight 客户端对象模型的引用程序集。右键单击 SPSilverlightExample 项目中的“引用”,然后选择“添加引用”。
16. 浏览到“C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\ LAYOUTS\ClientBin”文件夹。
17. 选择“Microsoft.SharePoint.ClientSilverlight.dll”和“Microsoft.SharePoint.Client.Silverlight.Runtime.dll”(按住 Ctrl 可以选择多个文件)
18. 按“确定”添加所选 dll 的引用。

图 50 - 添加引用
任务 2 ― 编写代码以访问并呈现 SharePoint 列表数据
1. 在 Visual Studio 中,打开“工具箱”并展开“Silverlight 控件”。
2. 将 DataGrid 控件拖动到 Page.xaml Silverlight 设计器中的现有 Grid 上。

图 51 - Silverlight 控件工具箱
3. 通过以下方式扩展 DataGrid,使其占据整个页面:转到“属性”网格并将“Width”和“Height” 属性设置为“Auto”,将“HoriztonalAlignment”和“VerticalAlignment”属性设置为“Stretch”,将“Margin”设置为 0。

\

图 52 - DataGrid 属性
4. 另外,务必选中“AutoGenerateColumns”(或在 XAML 中将其值设置为 true)。

图 53 - AutoGenerate Columns 属性
5. 打开 App.xaml.cs,将以下 using 语句添加到文件顶部:

 

View Code
1 using Microsoft.SharePoint.Client;
2  using System.Threading;

6. 将以下代码添加到 Application_Startup 方法的开头。



View Code
ApplicationContext.Init(e.InitParams, SynchronizationContext.Current);

7. 打开 MainPage.xaml.cs,将以下 using 语句添加到文件顶部:



View Code
using Microsoft.SharePoint.Client;

8. 将以下类添加到 MainPage 类之前:



1 public class Project
2 {
3 public string Title { get; set; }
4 public DateTime DueDate { get; set; }
5 public string Description { get; set; }
6 }

9. 将以下变量添加到 MainPage 类中:



private ListItemCollection _projects;

10. 将以下代码添加到 Page 构造函数中 InitializeComponent 调用的下方:



View Code
1 ClientContext context = new ClientContext(ApplicationContext.Current.Url);
2 context.Load(context.Web);
3 List Projects = context.Web.Lists.GetByTitle("Projects");
4 context.Load(Projects);
5 CamlQuery query = new Microsoft.SharePoint.Client.CamlQuery();
6 string camlQueryXml = "<View><Query><Where><Gt>" + "<FieldRef Name='Due_x0020_Date' />" + "<Value Type='DateTime'>2008-01-1T00:00:00Z</Value>" + "</Gt></Where></Query><ViewFields>" + "<FieldRef Name=\"Title\" /><FieldRef Name=\"Description\" />" + "<FieldRef Name=\"Due_x0020_Date\" />" + "</ViewFields></View>"; query.ViewXml = camlQueryXml; _projects = Projects.GetItems(query); context.Load(_projects);
7 context.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(OnRequestSucceeded), null);

11. 将以下代码添加到构造函数之后:



View Code
1 private void OnRequestSucceeded(Object sender, ClientRequestSucceededEventArgs args)
2 { // this is not called on the UI thread
3   Dispatcher.BeginInvoke(BindData);
4 }
5 private void BindData()
6 {
7 List<Project> projects = new List<Project>();
8 foreach (ListItem li in _projects)
9 {
10 projects.Add(new Project()
11 {
12 Title = li["Title"].ToString(),
13 DueDate = Convert.ToDateTime(li["Due_x0020_Date"].ToString()),
14 Description = li["Description"].ToString()
15 });
16 } dataGrid1.ItemsSource = projects; // must be on UI thread }
17   }

此代码将初始化 SharePoint Silverlight 客户端对象模型上下文 (ClientContext)。然后获取对 Projects 列表的引用,

并对列表运行简单的 CAML 查询以提取截止日期晚于 1/1/2008 的所有项目。结果将转换为 Projects 列表并绑定到 Silverlight DataGrid 控件。

任务 3 ― 使用 SharePoint Silverlight Web 部件进行部署并测试
若要将解决方案部署到 SharePoint,Silverlight 项目创建的结果 .xap 文件需要位于 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin 文件夹中。
1. 右键单击“SPSilverlightExample”项目,选择“属性”并选择“生成”选项卡。
2. 将输出路径更改为 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin。







图 54 - 项目属性
3. 生成解决方案。.xap 文件已复制到所需 SharePoint 目录,您可以将 Silverlight Web 部件添加到 SharePoint 网站。
4. 打开 Internet Explorer 并浏览到 http://chenrensong:33333

5. 选择页面顶部的“编辑”图标。
6. 选择“插入”选项卡,然后单击“Web 部件”。
7. 从“类别”列表中选择“媒体和内容”,从 Web 部件列表中选择“Silverlight Web 部件”, 然后单击“添加”。
8. 在弹出的“Silverlight Web 部件”对话框中,输入 /_layouts/ClientBin/SPSilverlightExample.xap 作为 URL。



图 55 - Silverlight Web 部件 Url 对话框
9. 单击“确定”保存 Silverlight Web 部件。
10. 退出编辑模式。
11. 最终 Web 部件在 SharePoint 页面上将如下所示:



图 56 - 完成的 Silverlight Web 部件
在此练习中,您已经创建了一个在数据网格中显示 SharePoint 列表的基本 Silverlight 应用程序。 列表的数据从服务器检索,因此可用于使用 SharePoint 客户端对象模型的 Silverlight。

--------------------------------------------------------------------

总结:做这个练习可能会出现列表没东西显示,这是因为你缺少Projects的列表,请建立一个包含Title、Due_x0020_Date、Description三个字段,然后添加数据,里面的数据就会显示到silverlight上面了.

code sample:Begin.zip

原文地址:https://www.cnblogs.com/cracker/p/sharepoint_siliverlight_list.html