2011-03-03 9 views
6

私はPeopleEditorを持っている:Sharepoint PeopleEditor:返されるユーザー/グループの種類を調べるにはどうすればよいですか?

<SharePoint:PeopleEditor ID="peopleEdit" ... SelectionSet="User,DL,SecGroup,SPGroup" /> 

それは、ページ上で完璧に動作、すなわち、私はADユーザー、SharePointグループと、私は希望のものを選択することができます。

問題は、PeopleEditorのプロパティがで、返されるユーザー/グループがであることがわかりません。のは、次の例を見てみましょう:

//User: John Doe - mycompany\jondoe is at position 0 
//Sharepoint group: "All Site Users" is at position 1 

PickerEntity pickerEntity1 = (PickerEntity).peopleEdit.ResolvedEntities[1]; 
// pickerEntity1.Key = "All Site Users" 
// pickerEntity1.Claim = null 
// pickerEntity1.DisplayText = "All Site Users" 
PickerEntity pickerEntity0 = (PickerEntity).peopleEdit.ResolvedEntities[0]; 
// pickerEntity1.Key = "mycompany\jondoe" 
// pickerEntity1.Claim = null 
// pickerEntity1.DisplayText = "Doe, John" 

私はユーザーとして、またはグループとして返​​される文字列の[sic]値をキャストしようとしているようないくつかの「ハック」物事を行うと例外ベースのプログラムの流れのいくつかの種類を行うことができます(ユーザーが存在する場合はこれを、そうでなければグループが存在する場合など)、私はそのクリーンなコードを考慮しません。

SharepointでPeople/Groupを選択するより良い方法や、PeopleEditorを使用するより良い方法がありますか?私はすべての可能な値を覚えていないが、UserSharePointGroupは、それらの間で間違いなくある

string principalType = pickerEntity1.EntityData["PrincipalType"].ToString(); 

答えて

5

EntityDataハッシュテーブルからPrincipalType値を使用してください。


moontearのコメント:

は、このエンティティが持っているすべての情報を一覧表示するには、EntityDataElements配列が便利です。 SPGroupについては、これは、SPGroupID,AccountName,PrincipalTypeを含む。


Janis Veinbergsのコメント:

それがMicrosoft.SharePoint.Utilities.SPPrincipalType列挙型の値が含まれていますが、私はそれをテストしていないことが考えられます。ここで

あなたが行く:

[Flags] 
public enum SPPrincipalType 
{ 
    None = , 
    User = 1, 
    DistributionList = 2, 
    SecurityGroup = 4, 
    SharePointGroup = 8, 
    All = SharePointGroup | SecurityGroup | DistributionList | User, 
} 
+1

ああ、完璧!このエンティティが持つすべての情報を一覧表示するには、 '.EntityDataElements'配列が役に立ちます。 SPGroupの場合、これには「SPGroupID」、「AccountName」、「PrincipalType」が含まれます –

+1

「Microsoft.SharePoint.Utilities.SPPrincipalType」列挙型の値が含まれている可能性があります。しかし、私はそれをテストしていない。ここに行く: '[フラグ] パブリック列挙SPPrincipalType { なし=、 ユーザー= 1、 DistributionListの= 2、 SecurityGroup = 4、 SharePointGroup = 8、 すべて= SharePointGroup |セキュリティグループ|配布リスト| User、 } ' –

+0

@moontear貴重な情報が含まれていて、読みやすくなっているので、あなたのコメントを回答に追加しました。 –