Skip to main content

User เป็นเหตุ

Submitted by ezybzy on

เขียนโปรแกรมให้สุ่มหยิบ SPUser มาแสดงผล ทีนี้เกิดปัญหาว่า ไม่มี User ใดที่เข้าเงื่อนไขที่อยากให้แสดงผลเลย ตรวจสอบเงื่อนไขก็ดูไม่มีอะไรผิดปกตินะ แต่สิ่งที่ผิดคือ แหล่งที่ไปดึง User มาตรวจสอบ มีจำนวน User น้อยกว่าที่คาดไว้

เผอิญว่าใน SPWeb มันมีแหล่งที่ให้สามารถดึง User มาใช้ได้ 3 แหล่งคือ AllUsers, SiteUsers, และ Users ก็เกิดความสับสนว่า จะใช้จากแหล่งใดดี ไปเจอคำอธิบายคำตอบของเรื่องนี้ในกระดานสนทนา MSDN เลยตัดมาสรุปคิดว่าน่าจะใช้ประโยชน์ต่อไปได้

SPWeb.Users gets the collection of user objects that are explicitly assigned permissions in the Web site . It will not return users who have access through a group.

SPWeb.AllUsers gets the collection of user objects that represents all users who are either members of the site collection or who have browsed to the site as authenticated members of a domain group in the site. (note the "browsed to" here... adding a AD group to a site does not add the users to AllUsers immediately... they will not be listed here until they have visited the site at least once.)

SPWeb.SiteUsers gets the collection of all users that belong to the site collection.

สังเกตว่า AllUsers ก็จะพบแค่ User ที่ผ่านการ EnsureUser มาแล้วเท่านั้น

Tags