我正在尝试使用 javascript 和数组创建一个表。我正在对 SharePoint 进行客户端调用以返回 XML 响应,从而为我提供数据(用户/组)。使用这些调用,我得到了所有用户和所有组的数组。我需要遍历每个组并找到其中的用户,如果用户在该组中,则用 X 标记,如果没有则留空。我无法让它工作。
这就是我想要做的:
//Build taxonomy
var allGroups = ["Users"];
var allUsers = [];
var taxonomy = [];
function initTax(){
console.log("initiating taxonomy...")
//get all users and add them to array
$().SPServices({
operation: "GetUserCollectionFromSite",
async: true,
completefunc: function(xData,Status){
$(xData.responseXML).find("User").each(function(){
allUsers.push($(this).attr("userLoginName"));
});
}
});
//get all groups and add them to array
$().SPServices({
operation: "GetGroupCollectionFromSite",
async: true,
completefunc: function(xData,Status){
$(xData.responseXML).find("Group").each(function(){
allGroups.push($(this).attr("Name"));
});
}
});
buildTable();
}
var i, j;
function buildTable(){
for (j=0;j<allGroups.length;i++){
for (i=0;i<allUsers.length;i++){
$().SPServices({
operation: "GetGroupCollectionFromUser",
userLoginName: allUsers[i],
async: true,
completefunc: function(xData, Status){
var userInGroup = $(xData.responseXML).find(allGroups[j]);
if(userInGroup){
taxonomy[j][i] = "X";
}else{
taxonomy[j][i] = "";
}
}
});
}
}
}
XML:GetGroupCollectionFromUser 和 GetGroupCollectionFromSite
<GetGroupCollectionFromUser xmlns=
"http://schemas.microsoft.com/sharepoint/soap/directory/">
<Groups>
<Group ID="3" Name="Group1" Description="Description" OwnerID="1"
OwnerIsUser="False" />
<Group ID="15" Name="Group2" Description="Description"
OwnerID="12" OwnerIsUser="True" />
<Group ID="16" Name="Group3" Description="Description"
OwnerID="7" OwnerIsUser="False" />
</Groups>
</GetGroupCollectionFromUser>
XML:GetUserCollectionFromSite
<GetUserCollectionFromSite xmlns=
"http://schemas.microsoft.com/sharepoint/soap/directory/">
<Users>
<User ID="4" Sid="S-1-5-21-2127521184-1604012920-1887927527-
34577" Name="User1_Display_Name"
LoginName="DOMAIN\User1_Alias" Email="User1_E-mail"
Notes="Notes" IsSiteAdmin="False" IsDomainGroup="False" />
<User ID="5" Sid="S-1-5-21-2127521184-1604012920-1887927527-
354403" Name="User2_Display_Name"
LoginName="DOMAIN\User2_Alias" Email="User2_E-mail"
Notes="Notes" IsSiteAdmin="False" IsDomainGroup="False" />
.
.
.
</Users>
</GetUserCollectionFromSite>
http://msdn.microsoft.com/en-us/library/ms774422(v=office.12).aspx