Ostatnio jeden z moich klientów miał dość nietypowe życzenie w kontekście przesłania parametru w adresie URL do formularza InfoPath. Zdarzało mi się, że robiłem coś takiego w asp, ale nigdy nie było potrzeby, żeby coś takiego zrobić z InfoPath. No dobrze sprawdźmy czy da się przesłać parametr w adresie URL do formularza InfoPath. Kiedy szukałem materiałów w tym temacie znalazłem niewiele, jest dość starty adres . Jest jeszcze dokument na stronach Microsoft: Use Query Parameters to Invoke Browser-Enabled InfoPath Forms, ale akurat tam nie znajdziemy rozwiązania jak przesłać parametr w adresie URL do formularza InfoPath. Raczej jak zarządzać wyświetlaniem opublikowanego formularza. I w sumie to wszystko.
Parametr w adresie URL do formularza InfoPath
No dobrze bierzmy się do pracy. Na początek stwórzmy sobie prosty formularz z dwoma polami tekstowymi:
Jak widać nie jest zbyt skomplikowany. No dobrze teraz pora poszukać rozwiązania naszego problemu. Tak na prawdę bez pisania kodu jest możliwe tylko jedno rozwiązanie. Żeby to zrobić wykorzystamy InfoPath Form Web Part. Na początek stwórzmy sobie prostą stronę w naszym SharePoincie i dodajemy do niej InfoPath Form Web Part.
No dobrze teraz czas na nasz parametr. Żeby to zrobić skorzystamy z kolejnego web partu – Query String (URL) Filter. Dodajemy nazwę parametru w naszym web parcie Query String (URL) Filter. W moim przypadku jest to Field1. Naciskamy zastosuj i możemy przejść do tworzenia połączenia pomiędzy naszymi dwoma web partami. Żeby to zrobić wybieramy połączenia -> prześlij filtrowane wartości do -> InfoPath Form Web Part. W tym miejscu jedna mała podpowiedź. Jeżeli w trakcie tworzenia połączenia dostaniecie błąd
The consumer Web Part did not provide schema information
To oznacza, że musicie zaktualizować swój formularz. W InfoPath musicie wybrać Plik -> Zaawansowane opcje formularza -> Awansowane Właściwości -> a tam musisz dodać swoją kolumnę do „Wymienione poniżej pola będą dostępne jako parametry połączenia składnika web part w programie SharePoint”. Potem musisz ponownie opublikować swój formularz.
Wróćmy do naszego Query String (URL) Filter. Teraz gdy go wybierzemy powinien pojawić się dialog do konfiguracji naszego połączenia. Wybieram pole Field 1 jako odbiorcę danych.
Naciskamy zakończ i możemy przejść do testowania naszego połączenia. Jeżeli teraz wprowadzimy w oknie adresu naszej przeglądarki następujący ciąg:
http://intranet.wingtip.com/sites/Programowanie/SitePages/FormPage.aspx?Field1=Tomasz
otworzy nam się formularz z pierwszym polem (field 1) zawierającym moje imię – Tomasz.
Jak widać rozwiązanie jest bardzo proste, szybkie i eleganckie, jeżeli chodzi o parametr w adresie URL do formularza InfoPath. Niestety ma jedną wadę. Nie można w ten sposób przesłać dwóch różnych parametrów, a to w niektórych przypadkach może być nie do przyjęcia. Czy da się z tym coś zrobić pokażę w następnym poście.