InfoPath’te form tasarlarken formu açan kullanıcının, kullanıcı bilgilerini alıp formdaki belirli kontrollerde görüntüleme ihtiyacımız olabilir.  Bu talebi SharePoint’in User Profile Service’ini kullanarak gerçekleştirebiliriz. Örnek olarak bir listenin formunu düzenleyerek, formu açan kullanıcının, kullanıcı bilgilerini formda kontrollere yansıtalım.

İzinler adında, İzin Tipi, İzin Başlangıç Tarihi, İzin Bitiş Tarihi adında üç fielddan oluşan bir listemiz olsun. Ribbon’da List Tools/List bölümünden Customize Form’u tıklayın.

Customize Form
Customize Form

Default content type, InfoPath’te default görüntüsüyle açılacaktır.

Default Görünüm
Default Görünüm

Title ve Attachments bölümlerini silip, üst tarafa Ad Soyad, Departman ve Ünvan şeklinde kullanıcı bilgilerini ekleyelim. InfoPath’te, Insert bölümünden Two Column 2  tablosu ekleyelim. Kullanıcı bilgilerini görüntülemek için Ad Soyad, Ünvan ve Departman için Home tabına geçip TextBox’lar ekleyelim. Görüntü aşağıdaki gibi olacaktır:

Kullanıcı Bilgileri Form Tasarımı
Kullanıcı Bilgileri Form Tasarımı

Kullanıcı Adı için karşısındaki TextBox’a sağ tıklayıp, TextBox Properties’i tıklayın. Açılan pencerede Field Name’i AdSoyad yapıp, Display tabından Read-only seçeneğini seçin. Ünvan ve Departman TextBox’ları içinde aynı işlemleri yapın.

InfoPath’te sağ tarafında listedeki fieldların listelendiği Fields penceresi vardır.

Fields Penceresi
Fields Penceresi

Eklediğimiz TextBox’larla birlikte field1, field2, field3 fieldları Fields’a eklenmiştir. Her field’a sağ tıklayarak Field Properties’i tıklayın. Field Properties penceresinde field isimlerini, bağlı olduğu kontrole göre Ad Soyad, Ünvan ve Departman olarak düzenleyelim. Formu publish ettiğimizde fieldlar, burada belirlediğimiz isimle listeye eklenecektir. Formu açtığımızda kullanıcı bilgileri readonly olarak ilgili kontrollerde görüntülenecektir.

Tasarımımız hazır. Şimdi Current User bilgilerini alalım:

Öncelikler User Profile Service için connection tanımlamalıyız. InfoPath’te Data tabından Data Connections’ı tıklayın. Açılan pencerede Add butonuna tıklayın.

Data Connection Tanımlama
Data Connection Tanımlama

Açılan ekranda Create a new connection to ve altında Recieve data seçili durumdadır. Bir kaynaktan data alacağımız için değişiklik yapmadan Next butonuna tıklayın. Data kaynağı olarak, User Profile Service’den data alacağımız için SOAP Web Service seçili olmalıdır. Next butonuna tıkladığımızda servis url’inin istendiği ekran gelecektir.

User Profile Service Adresi
User Profile Service Adresi

User Profile Service url’î http://site/_vti_bin/UserProfileService.asmx şeklindedir. Next butonuna tıkladığınızda servisdeki kullanıma sunulan metodlar listelenecektir. GetUserProfileByName metodunu seçelim.

GetUserProfileByName Metodu
GetUserProfileByName Metodu

Next butonunu tıklayın. Gelecek iki ekranda da Next butonunu tıklayın. Son ekranda connection’a bir isim vererek Finish butonunu tıklayın.

Data Connection Son Ekran
Data Connection Son Ekran

Yukarıdaki ekranda checkli görülen alan, form açılırken dataların otomatik olarak alınabilmesi için check edilmiş olmalıdır.

Data Connection hazır olduğuna göre; şimdi form load olurken kullanıcı bilgilerinin User Profile Service’den alalım.

InfoPath’te Data tabından Rules bölümünden Form Load’ı tıklayın. Load işlemi gerçekleşirken gerçekleşmesi istenen aksiyonlar rule olarak burada tanımlanabilir. Yeni bir rule tanımlamak için New/Action’ı tıklayalın.

Form Load Rule Tanımlama
Form Load Rule Tanımlama

User Profile Service’ten kullanıcı bilgilerini çeken metodumuz parametre olarak “kullanıcı adı(Account Name)”nı almaktadır. Bunun için öncelikle metoda kullanıcı adını parametre olarak geçmeliyiz.  Yeni oluşturacağımız rule’a bir isim verip, Run these actions bölümünden, Add menüsünden Set a field’s value aksiyonunu seçin.

Set a field's value
Set a field’s value

Açılan pencerede Field bölümünden User Profile Service’de ki metodun parametresini seçmelisiniz.

User Profile Service Fonksiyonuna User Name Parametresini Geçmek
User Profile Service Fonksiyonuna User Name Parametresini Geçmek

Öncelikle Fields altındaki Drop Down List’ten  User Profiles’dan kullanıcı bilgilerini almak için oluşturduğumuz connection’ı seçin. queryFields altından AccountName’i seçiniz. Değer set edeceğimiz parametreyi seçtik. Şimdi bu parametreye formu açan kullanıcının, kullanıcı adını set etmeliyiz. Bunun için Value TextBox’ının yanındaki fx butonunu tıklayın. Açılan pencerede Insert Function butonunu tıklayınız. Açılan pencerede User bölümünde userName function’ını seçin.

userName Fonksiyonu
userName Fonksiyonu

Bütün ekranlarda OK tıklayarak forma dönelim. userName fonksiyonu formu açan kullanıcının account name bilgisini verir.

Böylece kullanıcı bilgilerini almak için ilk rule olan kullanıcı adını servisteki metoda geçme kuralını tanımlamış olduk. İkinci olarak kullanıcı bilgilerini alacağımız metodu çalıştıracak  kuralı tanımlamamız gerekmektedi. Run these actions bölümünden Add menüsünden Query for Data’yı seçin. Açılan pencerede data connection olarak user profile service için tanımladığımız data connection’ı seçin ve OK butonuna tıklayın. User profile service’ten kullanıcı bilgilerini almak için herşey hazır. Şimdi aldığımız bu kullanıcı bilgilerini kontrollere nasıl bind ediyoruz ona bakalım.

Forma kullanıcının Ad Soyad,Departman ve Ünvan bilgilerini tutacak üç tane TextBox eklemiştik. Ad Soyad textboxında kullanıcın adı ve soyadı görüntülenecektir. Ad Soyad TextBox’ına sağ tıklayıp Text Box Properties’e girin. Default Value bölümünde TextBox’ın karşısındaki fx butonunu tıklayın. Açılan ekranda Insert Function butonunu tıklayın. Text bölümünden Concat fonksiyonunu seçin. Concat, text değerleri birleştiren bir string fonksiyondur. Bu alanda ad soyad bilgisi görüntüleneceği için user profile service’ten alacağımız ad ve soyad bilgilerini birleştirip bu alanda göstereceğiz. Fonksiyonu eklediğimizde görüntü aşağıdaki gibi olacaktır:

Concat Fonksiyonu
Concat Fonksiyonu

Birinci parametre ad bilgisi, ikinci parametre ad ve soyad arasında boşluk bırakmak için space, üçüncü parametre ise soyad bilgisi olacaktır. Birinci parametreyi eklemek için double click to insert field linkine çift tıklayın. Açılan ekranda user profile service için tanımladığımız connectionı seçip, fieldslarda dataFields altında Value field’ına gelin.

Field Değerini Alma
Field Değerini Alma

Value field’ını seçerek Filter Data butonuna tıklayın. Açılan pencerede Add butonunu tıklayın. İlk drop down listte Select a field or group’u tıklayın.Yukarıdaki ekranın aynısı açılacaktır. Bu defa Name field’ını seçin. Condition drop down’ı is equal to değerinde kalsın. Üçüncü drop down listte Type Text’i tıklayın. Dorp down list TextBox’a dönüşecektir. TextBox’a FirstName yazın. Buraya kadar yaptıklarımız, Name’i FirstName olan field’ın  değerini al anlamına gelmektedir. Bütün pencerelerde OK butonuna tıklayarak Concat fonksiyonun olduğu ekrana gelin. İkinci parametreyi space olarak verin. Üçüncü parametreyi FirstName değerini aldığımız gibi alın. Sadece son ekranda Type Text dediğinizde FirstName değil LastName yazacaksınız. Son durumda concat fonksiyonu aşağıdaki gibi görünecektir:

Concat Fonksiyonu
Concat Fonksiyonu

Departman ve Ünvan bilgilerini de yukarıdaki ad ve soyad bilgilerini aldığımız gibi alabilirsiniz. TextBoxların propertieslerine girdiğinizde Default value TextBox’ının yanındaki fx butonuna tıkladığınızda Insert Function yerine Insert field or group butonuna tıklayacaksınız. Sonraki işlemler yukarıda concat fonksiyonuna ilk parametreyi eklememiz ile aynıdır. Sadece son ekranda Type Text dediğinizde ünvan ve departman bilgilerini almak için, Ünvan için Title, Departman için Department yazmalısınız. Formu publish ettikten sonra listeye gidip New Item tıkladığınızda form aşağıdaki gibi açılacaktır:

Kullanıcı Bilgileri FormuKullanıcı Bilgileri Formu

Sonraki yazıda görüşmek üzere.

Reklamlar