zoukankan      html  css  js  c++  java
  • SharePoint里如何设置People picker值为当前登录用户值

    摘要:

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

    思路:

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

    image

    image

    步骤:

        第一步,取得登陆用户,通过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); 
            } 
        } 
    }
    

        第二步,查找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浏览器进行调试。

  • 相关阅读:
    合唱队形2 洛谷U5874
    AC日记——石子归并 codevs 1048
    AC日记——舒适的路线 codevs 1001 (并查集+乱搞)
    AC日记——导弹拦截 洛谷 P1020 (dp+模拟)
    常见模板(欧拉筛素数,最小生成树,快排,并查集,单源最短路)
    AC日记——信息传递 洛谷 P2661 (tarjan求环)
    AC日记——逃出克隆岛 (bfs)
    数字对 (长乐一中模拟赛day2T2)
    改造二叉树 (长乐一中模拟赛day2T1)
    AC日记——热浪 codevs 1557 (最短路模板题)
  • 原文地址:https://www.cnblogs.com/johnsonwong/p/2079147.html
Copyright © 2011-2022 走看看