2008-11-28 29 views
10

bất cứ ai có thể chỉ cho tôi cách để có được người dùng trong một nhóm nhất định bằng cách sử dụng sharepoint?có được người dùng theo nhóm trong sharepoint

vì vậy tôi có danh sách chứa người dùng và hoặc nhóm. tôi muốn truy xuất tất cả người dùng trong danh sách đó. có cách nào để phân biệt giữa liệu mục danh sách là một nhóm hay người dùng. nếu một nhóm của nó, tôi cần phải có được tất cả người dùng trong nhóm đó.

im sử dụng C# và im cố gắng thực hiện bằng cách biến ứng dụng thành bảng điều khiển.

im mới để sharepoint và im thực sự nhảy vào cuối sâu của hồ bơi ở đây, bất kỳ trợ giúp sẽ được đánh giá cao.

cổ vũ ..

+2

Bạn đang nói về nhóm SharePoint hoặc Active Directory? – Nico

Trả lời

14

Điều đầu tiên bạn cần phải biết là khi bạn có một danh sách với một lĩnh vực Người dùng/nhóm bạn phải được nhận thức của các loại của nó. Khi bạn có một người dùng hoặc nhóm trong giá trị mục, loại trường là SPFieldUserValue. Tuy nhiên, nếu trường có nhiều người dùng/nhóm lựa chọn loại trường là SPFieldUserValueCollection.
tôi sẽ giả định rằng lĩnh vực của bạn cho phép một người dùng/nhóm lựa chọn duy nhất và bạn đã có các đối tượng sau đây:

SPSite site; 
SPWeb web; 
SPListItem item; 

Bây giờ, chúng tôi sẽ kiểm tra giá trị lĩnh vực cho một người dùng/nhóm và lấy một danh sách các người dùng, độc lập thuộc loại nào (tên của trường là "Người dùng").

SPFieldUserValue usersField = new SPFieldUserValue(mainWeb, item["Users"].ToString()); 
bool isUser = SPUtility.IsLoginValid(site, usersField.User.LoginName); 
List<SPUser> users = new List<SPUser>(); 

if (isUser) 
{ 
    // add a single user to the list 
    users.Add(usersField.User); 
} 
else 
{ 
    SPGroup group = web.Groups.GetByID(usersField.LookupId); 

    foreach (SPUser user in group.Users) 
    { 
     // add all the group users to the list 
     users.Add(user.User); 
    } 
} 

Tôi hy vọng nó sẽ giúp bạn.

Tks,
Pedro José Batista

+0

Như Sergey Turin nói dưới đây là tốt hơn để sử dụng các nhóm trang web vì web.Groups chỉ trả về các nhóm có quyền đối với trang web được tham chiếu. –

+0

bạn dường như có lỗi trên dòng "users.Add (user.User);". Vì "người dùng" đã là một đối tượng SPUser, bạn có thể thêm nó vào Danh sách: users.Add (user); – Patric

+0

Tôi có thể chạy công cụ này ở đâu? Tôi chỉ cần đặt này trong một tập tin .js và chạy nó từ giao diện điều khiển của tôi hoặc một cái gì đó? – Batman

5

lưu ý: một đối tượng SPUser cũng có thể là một AD Nhóm (có nghĩa là phải nói, một đối tượng SPUser có thể tồn tại cho "DOMAIN \ Domain Users" ... đó là lý do đối tượng SPUser cũng chứa các IsDomainGroup tài sản.

Từ thông tin này, bạn có thể bắt đầu đi qua thông qua các nhóm AD sử dụng các đối tượng SPPrincipalInfo ... tuy nhiên nó không phải lúc nào cũng dễ chịu.

Một điều đáng ghi nhớ là Đối tượng SPGroup bao gồm thuộc tính ContainsCurrentUser mà có thể đi qua các nhóm AD ... điều này giả định bạn đã có một đối tượng SPGroup để làm việc từ, tuy nhiên.

Tận hưởng.
-Scott

0

Cách tốt hơn để sử dụng web.SiteGroups thay vì web.Groups làm nhóm có thể được kế thừa bởi trang web đó.

0
private bool IsMember() 
    { 
     bool isMember; 
     SPSite site = new SPSite(SiteURL); 
     SPWeb web = site.OpenWeb(); 
     isMember = web.IsCurrentUserMemberOfGroup(web.Groups["GroupName"].ID); 
     web.Close(); 
     site.Close(); 
     return isMember; 
    } 
+0

Đó không phải là chính xác những gì OP hỏi. Anh ta muốn liệt kê tất cả các thành viên của một nhóm không để kiểm tra xem tài khoản Xy có nằm trong một nhóm cụ thể hay không. – Patric

Các vấn đề liên quan