あなたは、SharePointのバージョンを指定していないが、以下の説明では、SharePoint 2007に適用され、2010年
には確認されなかった人々ピッカーの値が「名前の確認」アイコンか 'をクリックして設定することができます「参照」アイコンをクリックします。
アンカータグである[名前の確認]アイコンをクリックすると、onclickイベントが 'WebForm_DoCallback'を呼び出し、非同期にSharePointサーバーにHTTP要求を行い、ピッカーに入力された名前を検証します。あなたが最も興味があるだろうということ「のEventTarget」、人々ピッカーのテキスト領域であることをWebForm_DoCallbacks引数の
function WebForm_DoCallback(eventTarget,
eventArgument,
eventCallback,
context,
errorCallback,
useAsync){
...
}
ワン:後
はWebForm_DoCallbackの署名です。非同期HTTPリクエストが返った後に呼び出されるコールバックメソッドであるため、 'eventCallback'にも興味があります。この場合、コアjsで定義されている 'EntityEditorHandleCheckNameResult(result、ctx)'です。続き
はEntityEditorHandleCheckNameResult関数の定義もされているデリゲートがイベントをEntityEditorCallbackメソッドに取り扱うこと
function EntityEditorHandleCheckNameResult(result, ctx)
{
EntityEditorClearWaitCursor(ctx);
EntityEditorCallback(result, ctx);
}
お知らせです。これは、[参照]アイコンをクリックすると、ユーザーを探して選択するためのダイアログが開きます。 「ブラウズ」アイコンは明らかに別のコールスタックを利用しますが、どちらもEntityEditorCallbackに依存しているので、「名前の確認」または「参照」をクリックすると、このメソッドに焦点を当てます。
var invokeAfterEntityEditorCallback = function(func) {
var old__EntityEditorCallback = EntityEditorCallback;
if (typeof EntityEditorCallback != 'function') {
EntityEditorCallback = func;
} else {
EntityEditorCallback = function(result, ctx) {
old__EntityEditorCallback(result, ctx);
func(result, ctx);
}
}
};
後は、その結果、人々ピッカーのテキストエリアのIDを警告するカスタム人々ピッカーのイベントハンドラです:
EntityEditorCallbackが呼び出された後、あなたのコードを実行するには、次のコードを活用することができ
を
次に、ブラウズダイアログからピッカー名を選択または選択した後にonPeoplePickerFieldSetメソッドを呼び出すことができるロジックを次に示します。また、この文は、jQueryを使用している場合はdocument.readyイベントハンドラで呼び出すことができます。
invokeAfterEntityEditorCallback(onPeoplePickerFieldSet);
onPeoplePickerFieldSetメソッドの「結果」引数は、成功した検証だけでなく、ドメインquailifiedユーザー名を示すXML結果です。次のXMLは、「名前の確認」アイコンをクリックから生じた例です。
<Entities Append="False" Error="" Separator=";" MaxHeight="3">
<Entity Key="HOLLOWAY\csteel" DisplayText="Craig Steel" IsResolved="True" Description="HOLLOWAY\csteel">
<ExtraData>
<ArrayOfDictionaryEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DictionaryEntry>
<Key xsi:type="xsd:string">DisplayName</Key>
<Value xsi:type="xsd:string">Craig Steel</Value>
</DictionaryEntry>
<DictionaryEntry>
<Key xsi:type="xsd:string">Email</Key>
<Value xsi:type="xsd:string">[email protected]</Value>
</DictionaryEntry>
<DictionaryEntry>
<Key xsi:type="xsd:string">SPUserID</Key>
<Value xsi:type="xsd:string">16</Value>
</DictionaryEntry>
<DictionaryEntry>
<Key xsi:type="xsd:string">PrincipalType</Key>
<Value xsi:type="xsd:string">User</Value>
</DictionaryEntry>
</ArrayOfDictionaryEntry>
</ExtraData>
<MultipleMatches />
</Entity>
</Entities>
「CTX」引数は、人々ピッカーのテキスト領域のIDであるとjQueryのセレクタ文で使用することができます。
これだけです!
非常に便利な疑問、のthnx先生:) –