博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SharePoint 2013 开发——获取用户配置文件属性内容(User Profile)
阅读量:6002 次
发布时间:2019-06-20

本文共 3365 字,大约阅读时间需要 11 分钟。


博客地址:

本篇我们应用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());        }    }}

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

你可能感兴趣的文章
Canvas中 drawImage绘制图片不显示
查看>>
MyEclipse新建Server项目
查看>>
茵茵的第一课
查看>>
Linux实战教学笔记53:开源虚拟化KVM(一)搭建部署与概述
查看>>
PAT 1007
查看>>
USACO习题:Friday the Thirteenth
查看>>
C++ VS2012 内存泄露检测
查看>>
zabbix 批量添加聚合图形
查看>>
北京交通大学第六届新生程序设计竞赛题解
查看>>
求解点关于直线的距离、垂足、对称点公式
查看>>
洛谷 P1577 切绳子【二分答案】
查看>>
用 Google Map 的 Geocoder 接口来反向地址解析
查看>>
在中小型公司如何做好测试——论测试计划的重要性
查看>>
BSS段、数据段、代码段、堆与栈
查看>>
python调用c/c++写的dll
查看>>
r语言ggplot2误差棒图快速指南
查看>>
python之处理异常
查看>>
遍历form表单里面的表单元素,取其value
查看>>
PHP TP框架基础
查看>>
directive ngChecked
查看>>