Makale Özeti

Sharepoint’te gördüğümüz webPart’ların en sevilen özelliklerinden biri elbette sayfada istenilen yere sürüklenip bırakılabiliyor olmaları. Şu ana kadar geliştirdiğimiz webPart’lar bu özelliğe sahip değiller ancak şimdi geliştireceğimiz örnek, sayfadaki webPartZone’lar arasında sürüklenebilip bırakılabiliyor olacak.

Makale

.NET 2.0 ile birlikte uygulama geliştiricilerin kullanımına sunulan Web part Framework’u yakından incelemeye devam ediyoruz. 

Kullanıcıların Web Part’ları WebPartZone’lar arasında Taşımasını Sağlamak
Sharepoint’te gördüğümüz webPart’ların en sevilen özelliklerinden biri elbette sayfada istenilen yere sürüklenip bırakılabiliyor olmaları. Şu ana kadar geliştirdiğimiz webPart’lar bu özelliğe sahip değiller ancak şimdi geliştireceğimiz örnek, sayfadaki webPartZone’lar arasında sürüklenebilip bırakılabiliyor olacak. 

Aslında bu işlem WebPartManager kontrolünde yapılacak çok basit bir değişikliğe bakıyor. Şimdi adım adım bu özellik değişikliğini nasıl yapacağımızı görelim.

  1. İlk adımda sayfamıza bir RadioList kontrolü ekliyoruz. Kontrolde iki Item olacak. Bunlar “Görüntüleme Modu” ve “Tasarım Modu”. RadioList kontrolünü eklemek için kullanacağımız kod aşağıdaki gibidir.

<asp:RadioButtonList ID="rblMode" runat="server" AutoPostBack="True">

<asp:ListItem>Görüntüleme Modu</asp:ListItem>

<asp:ListItem>Tasarım Durumu</asp:ListItem>

</asp:RadioButtonList>

  1. Bu kontrolün SelectedIndexChanged olayında ise WebPartManager kontrolünde ihtiyaç duyduğumuz değişikliği, yani görüntüleme modu ile tasarım modu arasındaki geçişi sağlayacak kodu yazıyoruz.

Protected Sub rblMode_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rblMode.SelectedIndexChanged

        Select Case rblMode.SelectedIndex

        Case 0 : WebPartManager1.DisplayMode = _

                 WebPartManager.BrowseDisplayMode

        Case 1 : WebPartManager1.DisplayMode = _

                 WebPartManager.DesignDisplayMode

    End Select

End Sub

  1. Şimdi F5’e basarak deneme yapıyoruz..

    Sayfayı çalıştırdığımızda yeni eklediğimiz kontrolü görüyoruz. Tasarım Modu’nu seçtiğimizde:


    WebPartZone’lar görüntüleniyor.. Artık WebPart’ları sürükleyip bırakabiliyoruz..


    WebPart’ı WebPartZone4’e doğru sürüklüyorum..

    Ve artık TranslationWebPart, WebPartZone4’te görüntüleniyor..

  2. WebPartZone kontrollerinin başlık metinlerini (WebPartZone1, WebPartZone2) Headertext özelliği aracılığıyla düzenleyebiliriz.

WebPart’ların WebPartZone’lar arasında taşınması işlemini WebPartManager kontrolü yönetmektedir. Tasarım Modu’na geçtiğimizde, WebPartManager kontrolünün DisplayMode özelliği DesignDisplayMode olarak değiştiriliyor. WebPart’ları istediğimiz WebPartZone’lara taşıdıktan sonra Görüntüleme moduna geçtiğimizde DisplayMode özelliği BrowseDisplayMode olarak belirleniyor.

Sayfayı kapatıp yeniden açtığınızda WebPart’ların geliştirme aşamasında belirlenen yerlerinde değil, sizin son bıraktığınız yerde görüntülendiklerini göreceksiniz. Yani Web Part Framework, WebPart’ların son bulundukları lokasyonu hatırlayabilme özelliğine sahiptir. Peki ama bu nasıl gerçekleşiyor 

Gerçekte WebPart’ların lokasyon bilgileri projenin App_data klasöründeki ASPNETDB.MDF (SQL Express 2005) adlı veritabanındaki aspnet_PersonalizationPerUser adlı tabloda saklanır.

Aşağıdaki tablo bu veritabanındaki bilgileri göstermektedir:

Alan Değer
Id {94CACA48-36D3-4F64-A6AB-BD5352FF4522}
PathId {BF32CB1F-DEB7-4384-B3DB-5D9B45F59FF9}
UserId {F9D14F92-540B-4A64-A4B2-75DB80857E78}
PageSettings <Binary>
LastUpdatedDate 2/7/2005 8:48:58 PM

Eğer WebPart’ları orjinal lokasyonlarına taşımak istiyorsanız, bu kayıdı silmeniz yeterlidir.

Kapatılan WebPart’ın Yeniden Görüntülenmesi
Şu ana kadar yaptığımız uygulamalar esnasında Webpart'ların Close butonunu tıkladıysanız kapatılan WebPart'ı yeniden açmakta zorluk çekmiş olabilirsiniz. Korkuya gerek yok :) Kapattığımız WebPart'ları iki şekilde geri getirebiliriz.

  • aspnet_PersonalicationPerUser tablosunda ilgili kayıdı silerek
  • Bir sonraki bölümde ele alacağımız PageCatalog kontrolünü kullanarak

Kapatılmasını istemediğimiz WebPart'ların Close linklerini CloseVerb özelliğinin Visible özniteliğini False olarak belirterek pasif hale getirebiliriz.

Bir sonraki bölümde kullanıcıların Runtime esnasında sayfaya yeni WebPart’lar ekleyebilmelerini nasıl sağlayabileceğimizi ele alıyor olacağız.

Kadir Sümerkent
kadir@sumerkent.com