演练:创建显示 SharePoint OData 的 Silverlight Web 部件
SharePoint 2010 显示其通过 OData 列表数据。在 SharePoint 中,OData 服务进行宁静的服务 ListData.svc 实现。本演练演示如何创建承载 Silverlight 应用程序的 SharePoint web 部件。使用 ListData.svc,Silverlight 应用程序显示 SharePoint 公告列表信息。有关更多信息,请参见 SharePoint foundation 其他接口 和 打开数据协议。
本演练将演示以下任务:
创建 Silverlight 应用程序和 Silverlight Web 部件.
自定义 Silverlight 应用程序.
自定义 Silverlight 应用程序.
自定义 Silverlight 应用程序.
测试 Silverlight Web 部件.
说明 |
---|
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。 |
系统必备
您需要以下组件来完成本演练:
支持的 Microsoft Windows 和 SharePoint 版本。有关更多信息,请参见 开发 SharePoint 解决方案的要求.
Visual Studio 2012.
创建 Silverlight 应用程序和 Silverlight Web 部件
首先,创建一个 Silverlight 应用程序可以在 Visual Studio。使用 ListData.svc 服务,Silverlight 应用程序从 SharePoint 声明检索数据的列表。
说明 |
---|
Silverlight 版本,4.0 支持引用的 SharePoint 之前需的接口未列出数据。 |
若要创建 Silverlight 应用程序和 Silverlight web 部件
在菜单栏上,依次选择 文件,新建,项目 显示 新建项目 对话框。
外接 SharePoint 节点。visual C# 或 Visual Basic下,然后选择 2010 节点。
在模板窗格中,选择 SharePoint 2010 Silverlight Web 部件 模板。
在 名称 框中,输入 SLWebPartTest 然后选择 确定 按钮。
SharePoint 自定义向导 出现对话框。
在**“指定用于调试的网站和安全级别”**页上,输入要在其中调试网站定义的 SharePoint Server 网站的 URL,或者使用默认位置 (http://系统名称/)。
在 此 SharePoint 解决方案的信任级别是什么? 部分中,选择 部署为场解决方案 选项按钮。
尽管此示例使用一个场解决方案,Silverlight web 部件项目中部署,则场或沙盒解决方案。有关沙盒化解决方案与场解决方案的更多信息,请参见 沙盒解决方案注意事项。
在 指定 Silverlight 配置信息 页的 您希望以何种方式关联 Silverlight Web 部件 部分中,选择 新建一个 Silverlight 项目并将其与 Web 部件相关联 选项按钮。
更改 名称 到 SLApplication,设置 语言 到 Visual Basic 或 visual C#,然后设置 Silverlight 版本 到 Silverlight 4.0。
选择 完成 按钮。项显示在 解决方案资源管理器。
解决方案包含两个项目:Silverlight 应用程序和 Silverlight web 部件。Silverlight 应用程序检索并显示从 SharePoint 的列表数据,并且,Silverlight web 部件承载 Silverlight 应用程序,可以查看到 SharePoint。
自定义 Silverlight 应用程序
添加代码和模型元素向 Silverlight 应用程序。
自定义 Silverlight 应用程序
添加程序集对 Silverlight 应用程序的 System.Windows.Data。有关更多信息,请参见如何:使用“添加引用”对话框添加或移除引用。
在 解决方案资源管理器,打开 引用的快捷菜单,然后选择 添加服务引用。
说明 如果您使用的是 Visual Basic,必须选择 显示所有文件 图标。解决方案资源管理器 顶部显示 引用 节点。
在地址中 添加服务引用 对话框中,输入您的 SharePoint 网站的 URL,如 http://MySPSite,然后选择 执行 按钮。
在 Silverlight 找到 SharePoint OData 服务 ListData.svc 时,会将服务周到 URL 替换该地址。在本示例中,http://myserver 成为 http://myserver/_vti_bin/ListData.svc。
选择 确定 按钮添加服务引用添加到项目,并使用默认服务名称,ServiceReference1。
在菜单栏上,依次选择 Build,生成解决方案。
添加新的数据源到基于 SharePoint services 的项。为此,在菜单栏上,选择 视图,其他窗口,数据源。
数据源 窗口显示所有可用的 SharePoint 列表数据,如任务、声明和日历。
添加公告列表绑定到 Silverlight 应用程序。您可以将“声明”从在 Silverlight 设计器中的 数据源 窗口。
这将创建一个网格控件绑定到 SharePoint 网站的公告列表。
调整网格控件容纳 Silverlight 页。
在 MainPage.xaml 代码文件 (visual C# 或 MainPage.xaml.vb 的 MainPage.xaml.cs Visual Basic 中),添加以下命名空间引用。
' Add the following three Imports statements. Imports SLApplication.ServiceReference1 Imports System.Windows.Data Imports System.Data.Services.Client
// Add the following three using statements. using SLApplication.ServiceReference1; using System.Windows.Data; using System.Data.Services.Client;
添加下列变量的声明。选件类的顶部。
Private context As TeamSiteDataContext Private myCollectionViewSource As CollectionViewSource Private announcements As New DataServiceCollection(Of AnnouncementsItem)()
private TeamSiteDataContext context; private CollectionViewSource myCollectionViewSource; DataServiceCollection<AnnouncementsItem> announcements = new DataServiceCollection<AnnouncementsItem>();
用以下内容替换 UserControl_Loaded 程序。
Private Sub UserControl_Loaded_1(sender As Object, e As RoutedEventArgs) ' The URL for the OData service. ' Replace <server name> in the next line with the name of your SharePoint server. context = New TeamSiteDataContext(New Uri("http://<server name>/_vti_bin/ListData.svc")) ' Do not load your data at design time. If Not System.ComponentModel.DesignerProperties.GetIsInDesignMode(Me) Then 'Load your data here and assign the results to the CollectionViewSource. myCollectionViewSource = DirectCast(Me.Resources("announcementsViewSource"), System.Windows.Data.CollectionViewSource) announcements.LoadCompleted += New EventHandler(Of LoadCompletedEventArgs)(AddressOf announcements_LoadCompleted) announcements.LoadAsync(context.Announcements) End If End Sub
private void UserControl_Loaded_1(object sender, RoutedEventArgs e) { // The URL for the OData service. // Replace <server name> in the next line with the name of your // SharePoint server. context = new TeamSiteDataContext(new Uri("https://ServerName>/_vti_bin/ListData.svc")); // Do not load your data at design time. if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this)) { //Load your data here and assign the results to the CollectionViewSource. myCollectionViewSource = (System.Windows.Data.CollectionViewSource)this.Resources["announcementsViewSource"]; announcements.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(announcements_LoadCompleted); announcements.LoadAsync(context.Announcements); } }
确保将运行 SharePoint 您的服务器名称替换 ServerName 占位符。
添加下面的错误处理程序。
Private Sub announcements_LoadCompleted(sender As Object, e As LoadCompletedEventArgs) ' Handle any errors. If e.[Error] Is Nothing Then myCollectionViewSource.Source = announcements Else MessageBox.Show(String.Format("ERROR: {0}", e.[Error].Message)) End If End Sub
void announcements_LoadCompleted(object sender, LoadCompletedEventArgs e) { // Handle any errors. if (e.Error == null) { myCollectionViewSource.Source = announcements; } else { MessageBox.Show(string.Format("ERROR: {0}", e.Error.Message)); } }
修改 Silverlight Web 部件
更改在 Silverlight web 部件项目的属性启用 Silverlight 调试。
修改 Silverlight web 部件
打开 Silverlight web 部件项目的 (SLWebPartTest) 快捷菜单,然后选择 属性。
在 属性 窗口中,选择 SharePoint 选项。
如果尚未选中复选框,请选中 启用 Silverlight 调试 (而不是脚本调试) 复选框。
保存项目。
测试 Silverlight Web 部件
在 SharePoint 中测试新的 Silverlight web 部件确保它显示 SharePoint 正确列表数据。
测试 Silverlight web 部件
选择 F5 键生成并运行 SharePoint 解决方案。
在 SharePoint 中,在 网站操作 菜单中,选择 新页面。
在 新页面 对话框中,输入前缀,例如 SL Web 部件测试,然后选择 创建 按钮。
在网页设计器,编辑工具 选项卡上,选择 插入。
在选项卡条,选择 Web 部件。
在 类别 框中,选择 自定义 文件夹。
在 Web 部件 列表中,选择 Silverlight web 部件,然后选择 添加 按钮添加 web 部件到设计器。
在进行任何添加到所需的网页之后,选择 页 选项,然后在工具栏的 保存&关闭 按钮。
Silverlight web 部件现在应显示从 SharePoint 网站的声明数据。默认情况下,该页在网站页面在 SharePoint 存储列表。
说明 在访问在 Silverlight 数据在域之间时,Silverlight 防止可用于利用 Web 应用程序的安全漏洞。如果遇到问题,在访问在 Silverlight 中的远程数据,请参见 使服务可供在域边界。