私は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を使用するより良い方法がありますか?私はすべての可能な値を覚えていないが、User
とSharePointGroup
は、それらの間で間違いなくある
string principalType = pickerEntity1.EntityData["PrincipalType"].ToString();
:
ああ、完璧!このエンティティが持つすべての情報を一覧表示するには、 '.EntityDataElements'配列が役に立ちます。 SPGroupの場合、これには「SPGroupID」、「AccountName」、「PrincipalType」が含まれます –
「Microsoft.SharePoint.Utilities.SPPrincipalType」列挙型の値が含まれている可能性があります。しかし、私はそれをテストしていない。ここに行く: '[フラグ] パブリック列挙SPPrincipalType { なし=、 ユーザー= 1、 DistributionListの= 2、 SecurityGroup = 4、 SharePointGroup = 8、 すべて= SharePointGroup |セキュリティグループ|配布リスト| User、 } ' –
@moontear貴重な情報が含まれていて、読みやすくなっているので、あなたのコメントを回答に追加しました。 –