演练:创建显示 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 设置

系统必备

您需要以下组件来完成本演练:

创建 Silverlight 应用程序和 Silverlight Web 部件

首先,创建一个 Silverlight 应用程序可以在 Visual Studio。使用 ListData.svc 服务,Silverlight 应用程序从 SharePoint 声明检索数据的列表。

说明说明

Silverlight 版本,4.0 支持引用的 SharePoint 之前需的接口未列出数据。

若要创建 Silverlight 应用程序和 Silverlight web 部件

  1. 在菜单栏上,依次选择 文件新建项目 显示 新建项目 对话框。

  2. 外接 SharePoint 节点。visual C#Visual Basic下,然后选择 2010 节点。

  3. 在模板窗格中,选择 SharePoint 2010 Silverlight Web 部件 模板。

  4. 名称 框中,输入 SLWebPartTest 然后选择 确定 按钮。

    SharePoint 自定义向导 出现对话框。

  5. 在**“指定用于调试的网站和安全级别”**页上,输入要在其中调试网站定义的 SharePoint Server 网站的 URL,或者使用默认位置 (http://系统名称/)。

  6. 此 SharePoint 解决方案的信任级别是什么? 部分中,选择 部署为场解决方案 选项按钮。

    尽管此示例使用一个场解决方案,Silverlight web 部件项目中部署,则场或沙盒解决方案。有关沙盒化解决方案与场解决方案的更多信息,请参见 沙盒解决方案注意事项

  7. 指定 Silverlight 配置信息 页的 您希望以何种方式关联 Silverlight Web 部件 部分中,选择 新建一个 Silverlight 项目并将其与 Web 部件相关联 选项按钮。

  8. 更改 名称 到 SLApplication,设置 语言Visual Basicvisual C#,然后设置 Silverlight 版本Silverlight 4.0

  9. 选择 完成 按钮。项显示在 解决方案资源管理器

    解决方案包含两个项目:Silverlight 应用程序和 Silverlight web 部件。Silverlight 应用程序检索并显示从 SharePoint 的列表数据,并且,Silverlight web 部件承载 Silverlight 应用程序,可以查看到 SharePoint。

自定义 Silverlight 应用程序

添加代码和模型元素向 Silverlight 应用程序。

自定义 Silverlight 应用程序

  1. 添加程序集对 Silverlight 应用程序的 System.Windows.Data。有关更多信息,请参见如何:使用“添加引用”对话框添加或移除引用

  2. 解决方案资源管理器,打开 引用的快捷菜单,然后选择 添加服务引用

    说明说明

    如果您使用的是 Visual Basic,必须选择 显示所有文件 图标。解决方案资源管理器 顶部显示 引用 节点。

  3. 在地址中 添加服务引用 对话框中,输入您的 SharePoint 网站的 URL,如 http://MySPSite,然后选择 执行 按钮。

    在 Silverlight 找到 SharePoint OData 服务 ListData.svc 时,会将服务周到 URL 替换该地址。在本示例中,http://myserver 成为 http://myserver/_vti_bin/ListData.svc。

  4. 选择 确定 按钮添加服务引用添加到项目,并使用默认服务名称,ServiceReference1。

  5. 在菜单栏上,依次选择 Build生成解决方案

  6. 添加新的数据源到基于 SharePoint services 的项。为此,在菜单栏上,选择 视图其他窗口数据源

    数据源 窗口显示所有可用的 SharePoint 列表数据,如任务、声明和日历。

  7. 添加公告列表绑定到 Silverlight 应用程序。您可以将“声明”从在 Silverlight 设计器中的 数据源 窗口。

    这将创建一个网格控件绑定到 SharePoint 网站的公告列表。

  8. 调整网格控件容纳 Silverlight 页。

  9. 在 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;
    
  10. 添加下列变量的声明。选件类的顶部。

    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>();
    
  11. 用以下内容替换 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 占位符。

  12. 添加下面的错误处理程序。

    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 部件

  1. 打开 Silverlight web 部件项目的 (SLWebPartTest) 快捷菜单,然后选择 属性

  2. 属性 窗口中,选择 SharePoint 选项。

  3. 如果尚未选中复选框,请选中 启用 Silverlight 调试 (而不是脚本调试) 复选框。

  4. 保存项目。

测试 Silverlight Web 部件

在 SharePoint 中测试新的 Silverlight web 部件确保它显示 SharePoint 正确列表数据。

测试 Silverlight web 部件

  1. 选择 F5 键生成并运行 SharePoint 解决方案。

  2. 在 SharePoint 中,在 网站操作 菜单中,选择 新页面

  3. 新页面 对话框中,输入前缀,例如 SL Web 部件测试,然后选择 创建 按钮。

  4. 在网页设计器,编辑工具 选项卡上,选择 插入

  5. 在选项卡条,选择 Web 部件

  6. 类别 框中,选择 自定义 文件夹。

  7. Web 部件 列表中,选择 Silverlight web 部件,然后选择 添加 按钮添加 web 部件到设计器。

  8. 在进行任何添加到所需的网页之后,选择 选项,然后在工具栏的 保存&关闭 按钮。

    Silverlight web 部件现在应显示从 SharePoint 网站的声明数据。默认情况下,该页在网站页面在 SharePoint 存储列表。

    说明说明

    在访问在 Silverlight 数据在域之间时,Silverlight 防止可用于利用 Web 应用程序的安全漏洞。如果遇到问题,在访问在 Silverlight 中的远程数据,请参见 使服务可供在域边界

请参见

概念

部署、发布和升级 SharePoint 解决方案包

其他资源

为 SharePoint 创建 Web 部件