您的位置:首页 > 运维架构

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

2011-06-12 21:12 686 查看
摘要:

相信很多朋友都遇到过需要将某个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);
}
}
}


第二步,查找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浏览器进行调试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐