SharePoint 2007 ポータルに統合されるフォームを InfoPath 内に作成しています。このフォーム内には、ユーザーが個人の名前を入力できるテキストフィールドがあります。
この Person が存在するかどうかを確認するにはどうすればよいですか?
ユーザーを検証する代わりに、ドロップダウン リストにポータルのすべてのユーザー名を入力する方法はありますか? (Active Directory のユーザーが原因)
SharePoint 2007 ポータルに統合されるフォームを InfoPath 内に作成しています。このフォーム内には、ユーザーが個人の名前を入力できるテキストフィールドがあります。
この Person が存在するかどうかを確認するにはどうすればよいですか?
ユーザーを検証する代わりに、ドロップダウン リストにポータルのすべてのユーザー名を入力する方法はありますか? (Active Directory のユーザーが原因)
Contact Selector (ActiveX コントロール) を見てみましたか。これは、InfoPath でコントロールとして追加する方法を説明しているMSDN の記事であり、これを機能させる方法について説明しています。
私は InfoPath プロジェクトの大部分でこれを使用しており、ブラウザー対応のフォームでも問題なく動作します。
私はこれを具体的に行っていないので、もっと良い方法があるかもしれませんが、大量のデータを SharePoint から InfoPath フォーム (SharePoint フォーム ライブラリに展開され、MOSS Enterprise を使用して SharePoint Forms Service を介してアクセス可能) に引き出してきました。 ) また、SharePoint Web サービスを使用して別の方法を使用することもできます。非常にすばやく使用でき、個人 Web サービスはすぐそこにあります。
私は個人の存在を検証しませんが、ログインとSharePointを使用して個人のフルネームを決定します。あなたはあなたの目的のためにこのコードを変更することができるはずです、それは以下にあります。それが機能するためには、 GetUsersFromSPと呼ばれるInfoPathドキュメントのデータ接続が必要です。次のように構成されます。
string ADName = System.Environment.UserName;
IXMLDOMDocument3 UserQuery = (IXMLDOMDocument3)thisXDocument.GetDOM("GetUsersFromSP");
UserQuery.setProperty("SelectionNamespaces",
"xmlns:dfs=\"http://schemas.microsoft.com/office/infopath/2003/dataFormSolution\" " +
"xmlns:tns=\"http://schemas.microsoft.com/sharepoint/soap/directory/\"");
((WebServiceAdapterObject)thisXDocument.DataAdapters["GetUsersFromSP"]).Query();
IXMLDOMNode Users = UserQuery.selectSingleNode("//dfs:myFields/dfs:dataFields/tns:GetUserCollectionFromSiteResponse/tns:GetUserCollectionFromSiteResult/tns:GetUserCollectionFromSite/tns:Users");
foreach (IXMLDOMNode current in Users.selectNodes("tns:User"))
{
string Login = current.attributes.getNamedItem("LoginName").text;
Login = Login.ToUpper();
if (Login.EndsWith(ADName.ToUpper()))
{
thisXDocument.DOM.selectSingleNode("my:root/my:config/my:User").text = current.attributes.getNamedItem("Name").text;
break;
}
}
このコントロールを使用してください: http://blogs.msdn.com/infopath/archive/2007/02/28/using-the-contact-selector-control.aspx
または、独自のバリデーターを作成する場合は、SharePoint プロファイル データベースにクエリを実行する必要があります。ADに直接クエリを実行するよりも、これをお勧めします。プロファイル データベースの操作に関するオンラインの記事はたくさんあります。
ASP.NET アプリケーションで同様のことを行う場合、Sharepoint 検索を使用して、特定のユーザーの "People" スコープを検索しました。また、プロファイル情報全体を検索して、特定の役職または特定の部署の全員を引き戻すこともできます。
このリンクを見てください。ドロップダウンに SharePoint ユーザーを入力する方法が説明されています。
http://blueinfopath.blogspot.com/2008/10/how-to-populate-list-with-sharepoint.html
検証したい - テキストボックスを作成する - ボタンを追加し、ValidateUser という名前を付ける - ...... への受信接続を作成する - ValidateUser への Att ルール - テキストボックスをセカンダリ データソースのフィールド AccountName に追加する -受信接続を実行します - フィルター Name="PreferredName" を使用してフィールド Value の値を取得します
これは Infopath Form Services で機能します。テストして、UserLogin をテキスト ボックスに入力し、[検証] ボタンをクリックします。
フレデリク