SharePoint 2013 开发——获取用户配置文件属性内容(User Profile)

原创 2015年07月21日 09:11:58
博客地址:http://blog.csdn.net/FoxDave

本篇我们应用SharePoint CSOM(.NET)来读取用户配置文件的信息,个人开始逐渐倾向于客户端模型,因为不用远程登录到服务器去开发,在本机就可以玩了。

打开本地的Visual Studio 2015,选择新建项目,我们新建一个Windows Form应用程序吧,好久没用了,命名为WindowsFormsSPUserProfile。

应用CSOM,我们首先要对我们的项目添加客户端的引用。右键点击项目节点, 选择添加引用,在弹出窗体的右上角输入sharepoint进行搜索,选择Client、Client.Runtime、Client.UserProfile这三个dll添加,注意版本要选择15.0.0.0。

然后我们拖一个Label,一个TextBox,一个Button,一个DataGridView到窗体上,作为输入参数,输入网站集的URL,然后用DataGridView显示出所有的用户配置文件。

双击按钮控件,后台将自动生成button_Click事件方法,我们就在此处写我们的逻辑代码部分。

首先对输入框的Site URL部分做一下判定,这里用作演示我们就只判断一下非空条件,实际过程可能会涉及到诸如地址是否合法等问题。

接下来就在else分支中写主要的获取逻辑代码。在这个例子中,我们大致的思路是为:将某个网站集的用户读取出来,进而获取该用户的配置文件的属性集合。首先将用户列表加载到DataGridView中,然后在选择具体的某个用户时显示所选择用户的配置文件的属性集合信息。

首先将用户信息加载到控件上,WinForm好久不用了,所以方法较为笨拙。

然后配置DataGridView控件的Click事件,获取选中的行得到用户名信息,进而获得属性集合信息。

下面附上完整代码,比较粗糙,仅作示例用。

using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.UserProfiles;
using System;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsSPUserProfile
{
    public partial class MainForm : System.Windows.Forms.Form
    {
        ClientContext mClientContext = null;
        public MainForm()
        {
            InitializeComponent();
        }

        private void buttonOK_Click(object sender, EventArgs e)
        {
            if (txtSiteURL.Text == "")
            {
                MessageBox.Show("请输入网站集地址。");
            }
            else
            {
                //todo
                //获取输入的网站集URL
                string siteUrl = txtSiteURL.Text;
                //构建上下文对象
                if (mClientContext == null)
                {
                    mClientContext = new ClientContext(siteUrl);
                }
                //获取网站网站集的所有用户
                UserCollection users = mClientContext.Web.SiteUsers;
                mClientContext.Load(users);
                mClientContext.ExecuteQuery();
                //构建用户表
                DataTable table = new DataTable();
                table.Columns.Add("User Name", typeof(string));
                foreach (User u in users)
                {
                    DataRow row = table.NewRow();
                    row[0] = u.LoginName;
                    table.Rows.Add(row);
                }
                dataGridView.DataSource = table;
            }
        }

        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            //窗体关闭前释放资源
            if (mClientContext != null)
            {
                mClientContext.Dispose();
            }
        }

        private void dataGridView_MouseClick(object sender, MouseEventArgs e)
        {
            //获取双击行的用户
            string userName = dataGridView.SelectedRows[0].Cells[0].Value.ToString();
            //获取人员管理器
            PeopleManager peopleManager = new PeopleManager(mClientContext);
            //获取用户属性对象
            PersonProperties personProperties = peopleManager.GetPropertiesFor(userName);
            mClientContext.Load(personProperties, p => p.AccountName, p => p.UserProfileProperties);
            mClientContext.ExecuteQuery();
            StringBuilder propertiesStr = new StringBuilder(1300);
            foreach (var property in personProperties.UserProfileProperties)
            {
                propertiesStr.AppendLine(string.Format("{0}: {1}", property.Key.ToString(), property.Value.ToString()));
            }
            MessageBox.Show(propertiesStr.ToString());
        }
    }
}

本例的运行效果如下所示:


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

图文SharePoint 2013 中创建、配置、编辑或删除 User Profile Service 应用程序

在 SharePoint Server 2013 中创建、编辑或删除 User Profile Service 应用程序 SharePoint 2013         其他版本      ...

sharepoint 获取userprofileManager中用户详细信息

 using (SPSite spSite = new SPSite(siteUrl))            {                DataTable usersDT = new Dat...

sharepoint 2013 userprofile 用户信息

sharepoint 2013 用户信息

使用客户端对象模型访问User Profile

原文地址:点击打开链接 SharePoint 2013提供了很多的客户端API,其中的一个就是从User Profile中获取数据。现在你可以在客户端直接通过查询来获取user profile的数据...
  • shrenk
  • shrenk
  • 2014年04月01日 09:21
  • 1380

sharepoint 2010 获取用户信息UserProfile方法

1.引用dll文件.在vs2010项目中,添加 Microsoft.Office.Server.dll, Microsoft.Office.Server.UserProfiles.dll 2.获取用...

SharePoint2013数据导入、读取

static void Main(string[] args) { //OperateFolderItem(); DataTabl...

在SharePoint中几种访问域用户profile的方法

在SharePoint2010中,我们可以选择几种不同的方式来访问域用户的profile,下面简单介绍3种方法:1.通过客户端直接调用user profile service来访问例如项目中有silv...
  • dz45693
  • dz45693
  • 2011年07月22日 10:46
  • 2524

SharePoint 部件通过EditorPart自定义属性面板

需求:编写一个新闻展示的WebPart,要求可以分类,类别是从WebService中获取的字符串,要求可以在属性中勾选分类,显示该分类的信息,分类可能会增加。我要做的就是动态生成属性中的新闻类别,至于...

sharepoint 2016 学习系列篇(19)-文档库应用篇-(1)创建一个文档库

前面学习了有关数据列表的知识,包括列表的创建,字段的创建,数据增删改查,以及权限,以及列表的数据展示设置,相信大家对sharepoint的列表应用,应该有了一个初步的了解及使用,在我们平时的应用中,除...

User Profile Synchronization Service–Hangs on Starting (I fixed it!) 用户配置文件同步服务卡在“正在启动”状态

User Profile Synchronization Service–Hangs on Starting
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SharePoint 2013 开发——获取用户配置文件属性内容(User Profile)
举报原因:
原因补充:

(最多只允许输入30个字)