no se especificó la versión de SharePoint, pero la siguiente explicación se aplica a SharePoint 2007 y no se confirmó en 2010.
valor La gente del selector se puede configurar haciendo clic en el '' Comprobar nombres icono o el ' Navegar por el ícono.
Si hace clic en el icono 'Comprobar nombres' que es una etiqueta ancla, el evento onclick invoca 'WebForm_DoCallback' que realizará una solicitud HTTP asincrónicamente al servidor de SharePoint para validar el nombre ingresado en el selector de personas.
A continuación se presenta la firma WebForm_DoCallback:
function WebForm_DoCallback(eventTarget,
eventArgument,
eventCallback,
context,
errorCallback,
useAsync){
...
}
Uno de los argumentos que WebForm_DoCallbacks que va a ser más interesa es 'eventTarget', el área de texto selector de personas. También le interesará 'eventCallback', ya que es el método de devolución de llamada invocado después de que se devuelve la solicitud asincrónica HTTP. En este caso, es 'EntityEditorHandleCheckNameResult (result, ctx)' definido en core js.
siguiente es la definición de la función EntityEditorHandleCheckNameResult
function EntityEditorHandleCheckNameResult(result, ctx)
{
EntityEditorClearWaitCursor(ctx);
EntityEditorCallback(result, ctx);
}
en cuenta que delega la gestión de eventos con el método EntityEditorCallback. Este también es el caso si hace clic en el ícono "Examinar" que abre un cuadro de diálogo para que encuentre y seleccione un usuario. El icono 'Examinar' obviamente aprovecha una pila de llamadas diferente, pero como ambos dependen de EntityEditorCallback, me centraré en este método ya que la solución funciona cuando haces clic en 'Comprobar nombres' o 'Buscar'.
Para ejecutar su código después de EntityEditorCallback se invoca, puede aprovechar el siguiente código:
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);
}
}
};
A continuación se presenta un controlador de eventos la gente personalizados selector que alerta el resultado y el ID del área de texto Selector de personas:
function onPeoplePickerFieldSet(result, ctx){
alert(result);
alert(ctx);
}
La siguiente es la lógica que permitirá que se invoque el método onPeoplePickerFieldSet después de que el nombre del selector de personas se seleccione o seleccione desde el diálogo de exploración. Además, esta instrucción se puede invocar en el controlador de eventos document.ready si está utilizando jQuery.
invokeAfterEntityEditorCallback(onPeoplePickerFieldSet);
El 'resultado' argumento del método onPeoplePickerFieldSet es un resultado XML que indica la validación exitosa, así como el nombre de usuario quailified dominio. El siguiente código XML es un ejemplo resultante de hacer clic en el icono '' Comprobar nombres:
<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>
El argumento '' CTX es el ID del área de texto selector de personas y se puede utilizar en un comunicado selector de jQuery.
Eso es todo!
muy útil, señor thnx :) –