Makale Özeti

Bu yazımızda SharePoint de kullanmamız için kendi özel alan tipimizi (custom field type) nasıl yaratacağımızı göreceğiz. Yine her zaman olduğu gibi örnek bir senaryo üzerinden, gerçek hayat örnekleriyle geliştirmemizi yapacağız. Bir SPList üzerinde e-mail bilgisinin tutulması için özel bir alana ihtiyacımız olduğunu ve bu alanın mutlaka e-mail kriterlerine uyması gerektiğini daha önceden analist arkadaşlarımız bize bildirmişler ve bu konuda bizden birşeyler bekliyorlar.

Makale

Bu yazımızda SharePoint de kullanmamız için kendi özel alan tipimizi (custom field type) nasıl yaratacağımızı göreceğiz. Yine her zaman olduğu gibi örnek bir senaryo üzerinden, gerçek hayat örnekleriyle geliştirmemizi yapacağız.

Bir SPList üzerinde e-mail bilgisinin tutulması için özel bir alana ihtiyacımız olduğunu ve bu alanın mutlaka e-mail kriterlerine uyması gerektiğini daha önceden analist arkadaşlarımız bize bildirmişler ve bu konuda bizden birşeyler bekliyorlar.

İlk iş olarak Visual Studio 2010 ile boş bir (Blank Solution) SharePoint 2010 projesi açıyoruz. Daha sonra projemize, bu özel alanı tanımlayacağımız bir class ekliyoruz. Ben EmailField.cs dedim siz başka bir isim de verebilirsiniz. Bir class daha ekleyip bu sefer adına da EmailValidationRule.cs dedim, bu sınıf aracılığıyla da e-mail validasyonunu yapacağız.

EmailValidationRule.cs classımızın tek görevi validasyon, bu sınıfımızın görüntüsü şu şekilde oluyor :

Görüldüğü gibi, basit bir regex ile e-mail kontrolü yapılıyor. Sıra EmailField.cs ye geldi, bu class ımız da şu şekilde olacak :

Burada dikkat etmemiz gereken metod GetValidatedString metodu. Override ettiğimiz bu metod ile alanımızın gerçekten bir e-mail olup olmadığına bakıyoruz. Bu kontrolü de az önce yazdığımız EmailValidationRule.cs de bulunan kontrolle yapıyoruz. Eğer girilen değer geçerli bir e-mail adresi değilse, SPFieldValidationException fırlatarak son kullanıcıya bu hata hakkında bilgi veriyoruz. EmailField.cs de 2 adet constructor da kullandığımızı görmüşsünüzdür. Bu sınıf hakkında son olarak da default bir değer atayabilirdik, info@abc.com gibi, bunu da DefaultValue metodunu override ettiğimiz metotda return info@abc.com diyerek yapabilirdik. Ben yapmadım ama eğer size lazım olursa bu şekilde kullanabilirsiniz.

Projede yapmamız gereken son bir adım daha kaldı, o da projeye “mapped folder” eklemek. Bunun için projeye sağ tıklayıp Add -> SharePoint Mapped Folder diyoruz. Karşımıza çıkan ekrandan ise TEMPLATE altındaki XML i seçiyoruz.

Böylece projemize XML folderini maplemiş olduk. Şimdi de bu foldera yeni bir XML dosyası ekliyoruz.

aAdd -> New Item -> XML File, ben dosyanın adını fldtypes_customemail.xml dedim. Dosyanın adının fldtypes_ ile başlamasına dikkat edelim. XML dosyamızın içeriği de şu şekilde olacak :

Burada özel alan tipimiz hakkında bilgiler veriyoruz servera. Dikkat etmemiz gereken en önemli yer, FieldTypeClass kısmındaki verinin bizim projemizdeki doğru Namespace ve class ismini almış olması.

Artık herşey tamam, projemize sağ tıklayıp “Deploy” diyoruz ve SharePoint sitemizi açıp yeni bir custom list oluşturuyoruz (ya da var olan bir liste üzerinde de deneyebiliriz)

Listemizin ayarlar (settings) kısmından yeni bir kolon eklemeye çalışıyoruz,

Gördüğünüz gibi, az önce XML dosyasından “TypeShortDescription” kısmına yazdığımız değer burada yeni özel tipimizi gösteriyor. Yeni tipimizle yeni bir kolon ekleyip gerçekten de çalıştığını siz de görebilirsiniz.

Umarım işinize yarar bir yazı olmuştur.