2010-11-10 52 views
2

我有一個填充程序需要指定人員的InfoPath表單。稍後,工作流將任務分配給這些人員。我在尋找的是一個類似SharePoint的用戶字段的人員選擇器,但我可以在InfoPath中使用它。我已經設計了一個表單來填充名稱或電子郵件,表單將列出site.allusers組的結果。以編程方式搜索特定SharePoint用戶

問題是,如果需要添加到表單中的人以前從未訪問過此特定網站集,該怎麼辦?他們的帳戶不會列在AllUsers列表中。

在對象模型中,我可以搜索能夠使用SharePoint進行身份驗證的用戶嗎?

回答

1

爲什麼不直接使用InfoPath中的OTB並將其配置爲指向您的SharePoint環境?

http://www.sharepointassist.com/2009/02/27/adding-a-contact-selectorpeople-picker-to-an-infopath-form/

如果您運行MOSS與AD集成,那麼它應該自動檢索大家如果啓用AD同步這是在您的域名。

+0

其實我今天才發現這個控件。有趣的是,如果你沒有很好地進行谷歌搜索,那麼錯過這樣的事情是多麼容易。 – 2011-04-11 12:44:31

1

我認爲這裏的問題是,即使您找到用戶列表,如果用戶不存在於用戶信息列表中,工作流程也不會觸發任何操作。

如果用戶不存在於用戶信息列表中,那麼您將無法通過SharePoint對象模型找到它們,因爲它們不存在於SharePoint中。你將不得不以其他方式找到他們。

因此,基本上,它取決於認證是如何在SharePoint服務器上配置:

如果使用FBA,那麼誰可以與SharePoint驗證用戶必須存在於SQL數據庫的地方。 Membership.Provider會爲您提供FBA成員資格提供程序的鉤子(無論是SqlMembershipProvider還是其他)。然後您可以使用如下方法:

Membership.Provider.GetUser(username) 

查看用戶是否存在。您還可以循環訪問您的用戶或查找所有現有的用戶名,然後您可以在人員選擇器中顯示該用戶名。

如果您使用的是Windows身份驗證,則必須查看您的AD以查找潛在用戶。 DirectoryEntry對象就是你需要的東西。我想只有來自某個AD組的用戶才能訪問SharePoint?如果是這樣,那麼使用DirectoryEntry對象隔離該組,循環遍歷用戶,並且您將擁有用於人員選擇器的數據源。

正如我上面所說的那樣,任何一種方法都會爲您提供可能的用戶,但如果用戶尚未登錄,它將不會使工作流程正常工作。工作流程僅適用於用戶信息中存在的用戶名單。

當有人選擇SharePoint中不存在的用戶時,您可能必須通過代碼創建它。一個安全的方法是使用SPWeb.EnsureUser

檢查指定的登錄名 是否屬於 網站的有效用戶,並且如果登錄名不 尚不存在,將其添加到Web site.site。

所以真的,回答你的問題,無處。你需要尋找他們可能來自哪裏。

相關問題