文章摘要
主要介绍一下Sharepoint现有的人员选择功能和客户需要的人员选择功能。文笔很不好,草草的写一些开发时候遇到的问题,想到哪写到哪。中间可能会穿插一些和人员选择功能无关的东西,主要是为了记录一下,这些东西也是搜索了好长时间才找到的,成果不能就这么丢了。
功能需求
在Sharepoint中选人的时候Sharepoint已经提供给我们一个选人的功能,这个功能并没有将所有人都列出来,可能是为了性能考虑,没必要的人没必要花大力气都列出来,默认的可以使用搜索功能,根据用户名搜索用户,其实这样也挺好了。
但是这样的功能很不适合客户这边使用,感觉很不习惯,通常我们使用软件选择用户或者是选择其他东西的时候都是有直观的分类或者树形展示出来。想必是国内都是这样的,拿选人来说,好多客户都是想要树形把组织结构列出来然后再选人。
需求是这样的:
- 通过树形结构把公司的部门列出来;
- 点击部门名可以列出当前部门下的用户;
- 可以选择用户,单选,多选;
- 能做到选择部门;
看需求也挺简单的,做起来可不容易。
分析一下
默认的人员选择功能是这样滴,当选择人的时候点后面的书形图标,弹出一个窗口,我们可以在弹出窗口中搜索用户,组等。
如果要自定义这个功能,是不是我要改底层的代码什么的,怎么改?对Sharepoint了解程度还没到可以改底层代码的地步。
或许可以走走旁门左道什么的…..也许只能走旁门左道,谁叫咱道行不深呢…..
本来点击书形图标弹出的就是一个页面,这个页面是我们可以找到的,在“Layouts/picker.aspx”,就是这个文件,如果我们修改这个页面内容就可以做到所有的地方都修改了。但是这个是系统文件啊,改系统文件一定要备份,一定要备份…..多么痛的领悟
或许上边的方法也是一种可行办法,但是有没有方法不该那个文件呢?!应该有吧,旁门有很多,跳窗户也行。所有的选择功能都要点那个书形图标,那么我们能不能在书形图标上下手,让点击事件变成打开我们自定义的窗口,行一定行,以后说说怎么把点击事件变成打开我们自定义的窗口。
现在假如我们可以打开自定义窗口了,那么我们分析一下需求:
1、部门的树形结构应该简单
我打算做成左边是树形结构,右边显示用户的样子,使用System.DirectoryServices.dll下面的对象应该很容易实现我们需要的树形结构。
2 、点击部门名列出当前部门下的用户也应该容易
在AD中每一个组织机构都有一个唯一的ID,我们可以通过获取点击部门的ID在后台获取部门下的用户,然后返回给客户端,在自定义页面的右边显示用户信息。
3、选用户也容易实现。
这个简单了,点击用户将用户存储到一个控件中,点确定的时候再返回给调用页面
4、选择部门这个是个问题
我们都知道虽然sharepoint是和AD集成的,AD里面的用户都可以在Sharepoint里边体现,但是部门在Sharepoint里面可是体现不了的,默认情况下部门在AD里边是组织机构,默认的人员选择功能也不能选择一个组织机构,这里可能需要我们想其他办法实现,换个角度,在Sharepoint中是可以选择组的,而组下边是可以添加用户的,所以把所有的组织机构建成一个同名的组,再承接上下级关系。现在只有这一个办法。无形中工作量大大的。但是如果是开发的话开始使用编程的方式做。
最终要做成的样子: