8 Temmuz 2011 Cuma

Sharepoint 2010'da AjaxControlToolkit nasıl kullanılır?

Sharepoint 2010'un "kendinden" (daha uygun bir kelime bulamadım evet) Ajax desteğine sahip olduğunu, kullananlar biliyordur. (Özellikle Sharepoint 2007'de acı dolu bir şekilde Ajax desteğini aktif edenler bu duruma daha çok sevinmiştir :) ) Ajax desteği var peki ama ya kontroller? "Ben ne yapayım AjaxControlToolkit yoksa Ajax desteğini?!" diyenler mutlaka vardır. En azından ben varım. O yüzden bu postta bir Sharepoint 2010 projesinde AjaxControlToolkit nasıl kullanılır adım adım bunu anlatacağım.

  1. İlk iki maddede bildiğimiz standart işleri yapacağız. Öncelikle codeplex'ten istediğimiz AjaxControlToolkit dll'ini indiriyoruz. Bu dll'i Sharepoint 2010 projemizde yarattığımız "Referenced Assemblies" klasörümüze ekliyoruz ve "Add Reference" ile bu klasördeki dll'i projemize tanıtıyoruz.

  2. Projede AjaxControlToolkit kullanacağımız sayfa / sayfalara toolkit'i register ediyoruz.
    <%@ Register Assembly="AjaxControlToolkit, Version=3.5.40412.0, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
    Register edilmiş dll içerisinde istediğimiz kontrolü sayfa içerisinde kullanıyoruz.
    <ajaxControlToolkit.HTMLEditor ID="editor1" runat="server"></ajaxControlToolkit.HTMLEditor>
  3. Buraya kadar sorun yok zaten. Build ettiğinizde hata almazsınız. Siz de nasılsa build'de hata yok diye pakedi portal sunucusuna deploy edip, AjaxControlToolkit kontrolü içeren sayfanıza güzel güzel istekte bulunursunuzzzz! Bumm! Ne oldu? Patladınız değil mi? Ne diyor hata?

    "Could not load file or assembly 'AjaxControlToolkit' or one of its dependencies. The system cannot find the file specified."

    Ee burdaki tüm adımlar bitmeden neden deploy yapıyorsun canım arkadaşım :) Patlamasının nedeni de şu, sunucuda AjaxControlToolkit dll'i yok. Sharepoint 2007 kullananlar bilir, projeye 3rd party dll eklediğimizde sunucudaki config dosyasında o kontrolü SafeControl olarak işaretlemek, imzalı değilse assembly'i bir key file ile imzalamak, GAC'a atmak vs. vs. gerekiyordu. Ee yine bunları mı yapıcaz?? Hayır! Sharepoint 2010'da bir güzellik yapılmış developer'lar için ve bunlarla uğraşmadan, VS 2010 Sharepoint solution'daki paket yapısı üzerinde bu işlemlerin tümü yapılıyor. Görelim..


  4. Visual Studio üzerinde, Sharepoint 2010 projemizin içerisinde yer alan Package klasörü altındaki Paket imgesine çift tıklayarak paketimizi açıyoruz.
























    Açılan pakette sol tarafta paket dışında kalan proje elemanları, sağ tarafta ise pakette yer alan (yani deploy edildiğinde sunucuya gönderilecek) proje elemanları bulunuyor. AjaxControlToolkit dll'ini de bu pakede eklemek için sol alttaki "Advanced" butonuna basıyoruz. Yeni açılan ekranda sağ üst köşeden Add -> Add Existing Assembly yolunu izliyoruz. Bir sonraki ekranda ise, AjaxControlToolkit bilgilerini aşağıdaki gibi giriyoruz. Dikkat ederseniz Safe Control olarak ekleme işlemi bu ekrandan yapılıyor.























    Ok'ledik. Build ettik. Paket oluşturduk ve deploy ettik. AjaxControlToolkit içeren sayfaya istekte bulunduk. Patladık mı? Yine patladık. Neden?

    "AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll."


    Nedir meali? Benim gibi AjaxControlToolkit'in 3.5 versiyonunu kullanıyorsanız yapmanız gereken bir adım daha var demek. O da Sharepoint master sayfada yer alan ScriptManager'ı AjaxControlToolkit'in kendi script manager'ı olan ToolkitScriptManager ile değiştirmek. 4. ve son adımımıza geçiyoruz.

  5. Portalımızı Sharepoint Designer üzerinde açıyoruz. Sol menüdeki "Master Pages" menü elemanını seçtikten sonra sağda açılan sitenin master page'leri arasında genel master page olan v4.master'ı sağ tıklayarak "Edit File in Advanced Mode" diyerek dosyayı edit modda açıyoruz. (Bu noktaya dikkat genel master page default.master değildir, v4.master'dır). Açılan sayfa üzerinde ScriptManager diye aratarak bulduğumuz satırı ToolkitScriptManager olarak güncelliyoruz. Zaten sadece sayfanın başında form tag'inin hemen altında bir tane bulacaktır.
    <ajaxToolKit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></ajaxToolKit:ToolkitScriptManager>
    Bu değişikliğin ardından dosyayı kaydediyoruz ve istemci üzerinden portal'ın AjaxControlToolkit içeren sayfasına tekrar istekte bulunuyoruz veee artık AjaxControlToolkit içeren bir sayfamız olduğunu görüyoruz, gururlanıyoruz.
Sharepoint 2010 üzerinde AjaxControlToolkit kullanımı işte bu kadar basit. Zaten bir kere SafeControl olarak ekleyip, master page'de gerekli değişikliği yaptıktan sonra; sonraki kullanımlarınızda standart kullanımdan hiçbir farkı kalmıyor ;)

Kolay gelsin,

Hiç yorum yok: