wtorek, 28 września 2010

Jak ustawić zawartość kontrolki PeopleEditor przy użyciu Javascript


  Programowanie
 
Przy tworzeniu aplikacji dla SharePoint'a może zdarzyć się potrzeba ustawienia zawartości kontrolki PeopleEditor przy pomocy Javascript'u. Poniższy przykład wyjaśnia jak to zrobić.
 
<script type="text/javascript">

function SetPickerValue(pickerid, key, dispval)
{
    var xml = '<Entities Append="False" Error="" Separator=";" MaxHeight="3">';
    xml = xml + PreparePickerEntityXml(key, dispval);
    xml = xml + '</Entities>';

    EntityEditorCallback(xml, pickerid, true);
}

function PreparePickerEntityXml(key, dispval)
{
    return '<Entity Key="' + key + '" DisplayText="' + dispval + '" IsResolved="True" Description="' + key + '"><MultipleMatches /></Entity>';
}

</script>

Najlepszą metodą jest użycie funkcji EntityEditorCallback. Jest ona dostępna wraz z innymi wbudowanymi funkcjami dostarczonymi z SharePointem (zarówno w WSS 3.0, MOSS2007 jak i SP2010). Ta sama funkcja jest używana przez kontrolkę PeopleEditor'a do ustawiania swojej własnej wartości.
Najważniejsze są dwa pierwsze parametry funkcji - XML zawierający dane oraz identyfikator kontrolki (ClientID) której zawartość ma być ustawiona.
Powyższy kod prezentuje funkcję SetPickerValue zawierającą zarówno generację odpowieniego XML'a jak i wywołanie funkcji EntityEditorCallback.
 
Poniżej przykład użycia funkcji SetPickerValue:
 
SetPickerValue('ctl00_PlaceHolderMain_pplEdit', 'domain\\j.kowalski','Jan Kowalski');


Powyższe wywołanie generuje taki XML:

<Entities Append="False" Error="" Separator=";" MaxHeight="3">
  <Entity Key="domain\j.kowalski" DisplayText="Jan Kowalski" IsResolved="True" Description="domain\j.kowalski">
    <MultipleMatches />
  </Entity>
</Entities>


I przekazuje go do metody EntityEditorCallback.
Przy podawaniu nazwy konta domenowego należy zwrócić uwagę na znak \ (backslash). W języku Javascript jest to znak specjalny i nie można go używać bezpośrednio w parametrach tekstowych. Należy użyć \\ aby tekst był zinterpretowany jak znak backslash.

Aby ustawić zawartość PeopleEditora na kilka wartości na raz, trzeba zmodyfikować funkcję SetPickerValue tak, by generowała kilka węzłów <Entity /> w tworzonym XMLu. Każdy taki węzeł odpowiada jednej wartości w kontrolce.

czwartek, 2 września 2010

Obieg dokumentów w SharePoint...?

Krótko na temat tego czy warto na SharePoint tworzyć obiegi dokumentów czy jednak niekoniecznie... Raczej wstęp do szerszego zagadnienia niż kompleksowa odpowiedź na tak postawione pytanie, ale od czegoś przecież zacząć trzeba ;-)

Wpis otwiera nowy blog, który poruszać będzie tematykę mniej związaną z pisaniem kodu, a bardziej z aspektami miękkimi wdrożeń, organizacją projektów IT, oraz wysokopoziomowym ujęciem technologii.

Niebawem więcej, a tymczasem - zapraszam!

BANNER