SharePoint里如何设置People picker值为当前登录用户值

摘要:

相信很多朋友都遇到过需要将某个People类型的字段值设置为当前登录用户的情况而且已经给出了解决方案,因此本文没有什么新意,算法上也比较冗余,仅仅在博客里算作知识的备份。

思路:

在画面的右上角有一个欢迎控件,现实内容为“Welcome, 登陆用户名”,我们的代码就是要把这个用户名取出来,然后取到PeoplePicker字段对应的DIV,调用innerHTML属性来进行值得设置。

步骤:

第一步,取得登陆用户,通过Welcome来查找:

function getCurrentUser()
{
    var tags = document.getElementsByTagName('a');
    for (var i=0; i < tags.length; i++)
    {
        if(tags[i].innerText.substr(0,7) == 'Welcome')
        {
            return tags[i].innerText.substr(8,tags[i].innerText.length);
        }
    }
}

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/web/sharepoint/

第二步,查找PeoplePicker字段对应的DIV,一层一层往里追溯,算法并不好,最后break后还会继续循环,虽然对最终结果没什么影响,但不是什么好算法,有兴趣的朋友发现好的算法或者通过JQuery可以查到的算法欢迎共享!

function getPickerInputElement(fieldsInternalName)
{
    var result  = "";
    var divs = document.getElementsByTagName("DIV");
    for(var i=0; i < divs.length ; i++)
    {

        if(divs[i].id=="WebPartWPQ2")
        {
            var tds = divs[i].getElementsByTagName("TD");
            for(var j=0; j < tds.length; j++)
            {
                var cellHTML = tds[j].innerHTML;
                if(cellHTML.indexOf('FieldInternalName="' + fieldsInternalName + '"') >= 0)
                {
                    var innerDivs = tds[j].getElementsByTagName("DIV");
                    for(var k=0; k < innerDivs .length; k++)
                    {
                        if(innerDivs[k].id.indexOf("UserField_upLevelDiv") > 0)
                        {
                            result = innerDivs[k];
                            break;
                        }
                    }
                }
            }
        }
    }
    return result;
}

第三步,设置值,我们通过一个叫做fillPeoplePickerWithCurrentUser的方法来进行设置,调用SharePoint库方法_spBodyOnLoadFunctionNames,确保方法会在页面内容加载完成后执行。

_spBodyOnLoadFunctionNames.push("fillPeoplePickerWithCurrentUser");

function fillPeoplePickerWithCurrentUser()
{
    var currentUser = getCurrentUser();
    if(currentUser != null)
    {
        var pp = getPickerInputElement(“SetMe”);
        if(pp != null)
            pp.innerHTML = currentUser;
     }
}

说明:

本方法没有在Firefox浏览器进行调试。

作者:cnblogs JohnsonWang

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法
, 字段
, var
, length
, tags
getElementsByTagName
sharepoint 当前用户、datepicker 当前日期、datepicker 当前时间、uidatepicker当前时间、mydatepicker97 当前,以便于您获取更多的相关知识。

时间: 2024-11-08 19:12:53

SharePoint里如何设置People picker值为当前登录用户值的相关文章

透明度-安卓里如何设置状态栏一体化

问题描述 安卓里如何设置状态栏一体化 安卓中,如何设置状态栏颜色一体化和透明度!只需要进行配置文件就可以实现的!求大神指导 解决方案 配置文件好像实现不了,可以提供个代码实现.安卓KITKAT版本之后才支持透明状态栏.加到你的setContentView之前. if(VERSION.SDK_INT >= VERSION_CODES.KITKAT) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

求助帖-泰道ISX92怎么在软件里进行设置

问题描述 泰道ISX92怎么在软件里进行设置 大家好: 谁能告诉我下ISX的参数怎么在软件里进行设置呀,万分感谢

java遍历服务器里的所有excel文件读取特定单元格的值,循环读取文件的代码怎么写

问题描述 java遍历服务器里的所有excel文件读取特定单元格的值,循环读取文件的代码怎么写 package com.excel.action; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import jxl.Cell; import jxl.CellType; import jxl.LabelCell; import jxl.Sheet; import jxl.Workbo

android studio里怎么设置versionCode和versionName

问题描述 android studio里怎么设置versionCode和versionName 配置清理里设置完versionCode = 2,versionName = 2.0, 之后packageInfo.versionCode还是1,packageInfo.versionName还是1.0 是在哪里设置啊,配置清单里设置没用啊 解决方案 Android Studio 设置背景色 解决方案二: gradle文件夹里面设置.原配置文件虽然可以设置,但是已经舍去,你就算设置,编译的时候也不会读取

css-Webstorm里如何设置中文字体格式,font-family老是报错。?

问题描述 Webstorm里如何设置中文字体格式,font-family老是报错.? font-family:'宋体': 报错如下: Font property font-family does not have generic default less... (Ctrl+F1) This inspection verifies that the CSS font-family property contains a generic font name as a fallback alterna

方法-c#2010里怎么设置一段代码的属性??新人求解

问题描述 c#2010里怎么设置一段代码的属性??新人求解 这是我在网上找的用C写坦克大站的一段代码,教程视频里作者在 p1Tank上按了不知道什么键然后弹出一个窗口确认后就出现了下面这几行代码,我却找不到方法. private P1Tank p1Tank; public P1Tank P1Tank { get { return p1Tank; } set { p1Tank = value; } } 解决方案 这个是封装 pubice p1Tank p1tank: 选中后面的p1tank然后右键

在android studio里怎么设置才能显示错误提示???

问题描述 在android studio里怎么设置才能显示错误提示??? 在android studio里怎么设置才能显示错误提示,就是显示这个错误是第几行出错了???就像eclipse那样的错误提示,他显示的是第16行出错.如图 解决方案 默认就有,logcat中,下方有android monitor页签 解决方案二: Androidstudio也会显示啊,有错误的话就显示到日志里了啊 解决方案三: 一样会显示.

字段-sqlserver数据库里怎样设置datetime类型的小数位数为3位

问题描述 sqlserver数据库里怎样设置datetime类型的小数位数为3位 我在建一张表里的一个datetime类型的生日字段时,怎样将其小数位数设置为3位??? (用的SQLServer2014) 解决方案 我已找到了 要用datetime2(7)这种类型!将7改为3就行了

JavaScript设置、获取、清除单值和多值cookie的方法_javascript技巧

废话不多说了,直接给大家贴代码了. 具体代码如下: var CookieUtil = (function () { var Cookie = function () { // 获取单值cookie this.get = function(name) { var start = document.cookie.indexOf(encodeURIComponent(name)) ; var end = document.cookie.indexOf(';', start) ; if(end == -