摘要:
相信很多朋友都遇到过需要将某个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 当前,以便于您获取更多的相关知识。