SharePoint 2010 中的 Web 开发入门了解创建在 DataGrid 控件内显示 SharePoint 2010 列表的 Microsoft Silverlight 应用程序,以及如何将 Silverlight 应用程序部署到 SharePoint 网站。
适用范围: Microsoft SharePoint Foundation 2010 | Microsoft SharePoint Server 2010 | Microsoft Visual Studio 2010 | Microsoft Silverlight 3
发布时间:2010 年 8 月
供稿人: Frank Rice(该链接可能指向英文页面),Microsoft Corporation
在本练习中,您将创建一个在 DataGrid 控件内显示 SharePoint Server 2010 列表的简单 Microsoft Silverlight 3 应用程序。使用 Microsoft SharePoint 2010 客户端对象模型可从服务器检索列表数据。然后,将 Visual Studio 2010 解决方案部署到正在运行 Microsoft SharePoint Server 2010 的本地服务器。若要完成此任务,您必须执行以下操作:
注释: |
---|
本练习假定您在本主题后面指定的 SharePoint 网站上有一个名为 Projects 的列表。可在在 SharePoint 2010 中创建链接的列表中查找有关创建 Projects 列表的说明 |
创建 Silverlight 应用程序项目
在该任务中,您将在 Microsoft Visual Studio 2010 中创建 Silverlight 应用程序项目。
创建 Silverlight 项目
-
启动 Visual Studio 2010,单击“文件”,指向“新建”,然后单击“项目”。
-
在“已安装的模板”部分,导航到“其他项目类型”节点,单击“Visual Studio 解决方案”,然后单击“空白解决方案”。
-
在屏幕顶部,选择“.NET Framework 3.5”,在“名称”框中键入 Begin,然后单击“确定”。
-
在“文件”菜单上,指向“新建”,然后单击“项目”。
-
在“已安装的模板”部分,展开“Visual C#”节点,单击“Silverlight”,然后单击“Silverlight 应用程序”。
-
在屏幕顶部,选择“.NET Framework 3.5”,在“名称”框中键入 SPSilverlightExample,然后单击“确定”。
-
在“新建 Silverlight 应用程序”对话框中,单击“确定”。
-
接下来,添加对 SharePoint Silverlight 客户端对象模型的引用。在解决方案资源管理器中,右键单击“SPSilverlightExample”节点,然后单击“添加引用”。
-
导航到以下文件夹: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin。
-
选择“Microsoft.SharePoint.ClientSilverlight.dll”和“Microsoft.SharePoint.Client.Silverlight.Runtime.dll”,然后单击“确定”。
添加代码来访问和显示 SharePoint 列表数据
在该任务中,您需将代码添加到项目,从而允许您访问和显示 SharePoint 列表数据。
将代码添加到项目
-
若要显示工具箱,请在此“视图”菜单上单击“工具箱”。
-
从工具箱中,将“DataGrid”控件拖到 Page.xaml Silverlight 设计器中的现有网格上。
-
展开 DataGrid 控件以使用整个页面。在“属性”窗格中,将以下属性设置为显示的值:
属性 值 Width
Auto
Height
Auto
HorizonalAlignment
Stretch
VerticalAlignment
Stretch
Margin
0
-
另外,在“属性”窗格中,选中“AutoGenerateColumns”复选框。
-
打开“App.xaml.cs”,然后将以下 using 语句添加到该文件的顶部。
using Microsoft.SharePoint.Client; using System.Threading;
-
将以下代码添加到 Application_Startup 方法的开头。
ApplicationContext.Init(e.InitParams, SynchronizationContext.Current);
-
打开“MainPage.xaml.cs”,然后将以下 using 语句添加到该文件的顶部。
using Microsoft.SharePoint.Client;
-
将以下类添加到 MainPage 类前面。
public class Project { public string Title { get; set; } public DateTime DueDate { get; set; } public string Description { get; set; } }
-
将以下变量添加到 MainPage 类中。
private ListItemCollection _projects;
-
在调用 InitializeComponent 后向 MainPage 方法中添加以下代码。
ClientContext context = new ClientContext(ApplicationContext.Current.Url); context.Load(context.Web); List Projects = context.Web.Lists.GetByTitle("Projects"); context.Load(Projects); CamlQuery query = new Microsoft.SharePoint.Client.CamlQuery(); 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); context.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(OnRequestSucceeded), null);
-
在 MainPage 方法后添加以下代码。
private void OnRequestSucceeded(Object sender, ClientRequestSucceededEventArgs args) { // This is not called on the UI thread. Dispatcher.BeginInvoke(BindData); } private void BindData() { List<Project> projects = new List<Project>(); foreach (ListItem li in _projects) { projects.Add(new Project() { Title = li["Title"].ToString(), DueDate = Convert.ToDateTime(li["Due_x0020_Date"].ToString()), Description = li["Description"].ToString() }); } dataGrid1.ItemsSource = projects; // must be on UI thread }
在前面的步骤中添加的代码会初始化 SharePoint Silverlight 客户端对象模型上下文 (ClientContext)。然后,获取对 Projects 列表的引用,并对该列表运行简单的 CAML 查询,以便检索截止日期晚于 1/1/2008 的所有项目。结果会转换为 Projects 列表,并与 Silverlight DataGrid 控件绑定。
部署并测试解决方案
在该任务中,您将部署并测试解决方案,具体方法是将 Web 部件添加到 SharePoint 网站上的页面。
部署并测试解决方案
-
若要将解决方案部署到 SharePoint,通过 Silverlight 项目创建生成的结果 .xap 文件必须位于 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin 文件夹中。
右键单击“SPSilverlightExample”节点,单击“属性”,然后选择“生成”。
-
将“输出路径”更改为 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin。
-
生成解决方案,具体方法是右键单击“SPSilverlightExample”节点,然后单击“生成”。.xap 文件将复制到所需 SharePoint 目录,您可以将 Silverlight Web 部件添加到 SharePoint 网站。
-
打开 Internet Explorer,并导航到 SharePoint 网站。
-
选择页面顶部的“编辑”图标。
-
单击“插入”,然后单击“Web 部件”。
-
从“类别”列表中单击“媒体和内容”,从“Web 部件”列表中单击“Silverlight Web 部件”,然后单击“添加”。
-
在“Silverlight Web 部件”对话框中,键入 /_layouts/ClientBin/SPSilverlightExample.xap 作为 URL,然后单击“确定”。
Web 部件应类似于图 1。
图 1. 列出项目列表项的 Silverlight Web 部件