当前位置: 首页 > news >正文

创建 Silverlight 应用程序以访问 SharePoint 2010 数据

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 的本地服务器。若要完成此任务,您必须执行以下操作:

  • 创建 Silverlight 应用程序项目 

  • 添加代码来访问和显示 SharePoint 列表数据 

  • 部署并测试解决方案 

Ff728647.note(zh-cn,office.14).gif注释:
本练习假定您在本主题后面指定的 SharePoint 网站上有一个名为 Projects 的列表。可在在 SharePoint 2010 中创建链接的列表中查找有关创建 Projects 列表的说明

 

 

创建 Silverlight 应用程序项目

在该任务中,您将在 Microsoft Visual Studio 2010 中创建 Silverlight 应用程序项目。

创建 Silverlight 项目

  1. 启动 Visual Studio 2010,单击“文件”,指向“新建”,然后单击“项目”。

  2. 在“已安装的模板”部分,导航到“其他项目类型”节点,单击“Visual Studio 解决方案”,然后单击“空白解决方案”。

  3. 在屏幕顶部,选择“.NET Framework 3.5”,在“名称”框中键入 Begin,然后单击“确定”。

  4. 在“文件”菜单上,指向“新建”,然后单击“项目”。

  5. 在“已安装的模板”部分,展开“Visual C#”节点,单击“Silverlight”,然后单击“Silverlight 应用程序”。

  6. 在屏幕顶部,选择“.NET Framework 3.5”,在“名称”框中键入 SPSilverlightExample,然后单击“确定”。

  7. 在“新建 Silverlight 应用程序”对话框中,单击“确定”。

  8. 接下来,添加对 SharePoint Silverlight 客户端对象模型的引用。在解决方案资源管理器中,右键单击“SPSilverlightExample”节点,然后单击“添加引用”。

  9. 导航到以下文件夹: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin。

  10. 选择“Microsoft.SharePoint.ClientSilverlight.dll”和“Microsoft.SharePoint.Client.Silverlight.Runtime.dll”,然后单击“确定”。

添加代码来访问和显示 SharePoint 列表数据

在该任务中,您需将代码添加到项目,从而允许您访问和显示 SharePoint 列表数据。

将代码添加到项目

  1. 若要显示工具箱,请在此“视图”菜单上单击“工具箱”。

  2. 从工具箱中,将“DataGrid”控件拖到 Page.xaml Silverlight 设计器中的现有网格上。

  3. 展开 DataGrid 控件以使用整个页面。在“属性”窗格中,将以下属性设置为显示的值:

     

    属性

    Width

    Auto

    Height

    Auto

    HorizonalAlignment

    Stretch

    VerticalAlignment

    Stretch

    Margin

    0

  4. 另外,在“属性”窗格中,选中“AutoGenerateColumns”复选框。

  5. 打开“App.xaml.cs”,然后将以下 using 语句添加到该文件的顶部。

    C#
     
    using Microsoft.SharePoint.Client;
    using System.Threading;
    
  6. 将以下代码添加到 Application_Startup 方法的开头。

    C#
     
    ApplicationContext.Init(e.InitParams, SynchronizationContext.Current);
    
  7. 打开“MainPage.xaml.cs”,然后将以下 using 语句添加到该文件的顶部。

    C#
     
    using Microsoft.SharePoint.Client;
    
  8. 将以下类添加到 MainPage 类前面。

    C#
     
    public class Project
    {
        public string Title { get; set; }
        public DateTime DueDate { get; set; }
        public string Description { get; set; }
    }
    
  9. 将以下变量添加到 MainPage 类中。

    C#
     
    private ListItemCollection _projects;
    
  10. 在调用 InitializeComponent 后向 MainPage 方法中添加以下代码。

    C#
     
    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);
    
  11. 在 MainPage 方法后添加以下代码。

    C#
     
    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 网站上的页面。

部署并测试解决方案

  1. 若要将解决方案部署到 SharePoint,通过 Silverlight 项目创建生成的结果 .xap 文件必须位于 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin 文件夹中。

    右键单击“SPSilverlightExample”节点,单击“属性”,然后选择“生成”。

  2. 将“输出路径”更改为 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin。

  3. 生成解决方案,具体方法是右键单击“SPSilverlightExample”节点,然后单击“生成”。.xap 文件将复制到所需 SharePoint 目录,您可以将 Silverlight Web 部件添加到 SharePoint 网站。

  4. 打开 Internet Explorer,并导航到 SharePoint 网站。

  5. 选择页面顶部的“编辑”图标。

  6. 单击“插入”,然后单击“Web 部件”。

  7. 从“类别”列表中单击“媒体和内容”,从“Web 部件”列表中单击“Silverlight Web 部件”,然后单击“添加”。

  8. 在“Silverlight Web 部件”对话框中,键入 /_layouts/ClientBin/SPSilverlightExample.xap 作为 URL,然后单击“确定”。

    Web 部件应类似于图 1。



    图 1. 列出项目列表项的 Silverlight Web 部件

    列出项目列表项的 Silverlight Web 部件
 
http://technet.microsoft.com/zh-cn/library/ff728647

转载于:https://www.cnblogs.com/Areas/archive/2012/10/08/2715239.html

相关文章:

  • Qt学习之路(53): 拖放技术之二
  • OPPM 一页纸项目管理 One-Page Project Management
  • Qt学习之路(52): 拖放技术之一
  • C# 图片识别(支持21种语言)【转】
  • Qt学习之路(tip): Qt容器和算法拾遗
  • 使用 vimdiff 來呈現 Git diff 差異
  • android 开发Eclipse 快捷键
  • Qt学习之路(51): QByteArray和QVariant
  • 我该如何奋斗?
  • Qt学习之路(50): QString
  • 原创:C语言贪吃蛇代码
  • Qt学习之路(49): 通用算法
  • 【转】解决:SecureCRT在Linux下vim显示utf-8编码的文件乱码
  • Qt学习之路(47): 自定义Model之三
  • 用vc++做滚动条控件
  • Angular4 模板式表单用法以及验证
  • EOS是什么
  • flask接收请求并推入栈
  • httpie使用详解
  • iOS 颜色设置看我就够了
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Terraform入门 - 3. 变更基础设施
  • Wamp集成环境 添加PHP的新版本
  • Yeoman_Bower_Grunt
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 对JS继承的一点思考
  • 机器学习 vs. 深度学习
  • 面试遇到的一些题
  • 前端之React实战:创建跨平台的项目架构
  • 入门级的git使用指北
  • 正则与JS中的正则
  • 主流的CSS水平和垂直居中技术大全
  • 做一名精致的JavaScripter 01:JavaScript简介
  • ​你们这样子,耽误我的工作进度怎么办?
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #pragma once与条件编译
  • (Ruby)Ubuntu12.04安装Rails环境
  • (分布式缓存)Redis持久化
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (学习日记)2024.01.19
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .NET 5种线程安全集合
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .net6使用Sejil可视化日志
  • ??eclipse的安装配置问题!??
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [.net] 如何在mail的加入正文显示图片
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)
  • [C++]打开新世界的大门之C++入门