26 Nisan 2012 Perşembe

HtmlEditorExtender Arkaplan Rengi Sorunu

   Sitenizde HtmlEditorExtender kullanıyorsanız ve arkaplanınız beyaz değil de başka bir renk çıkıyorsa bunu değiştirmenin kolay bir yolu var. O da css dosyanıza :


.ajax__html_editor_extender_texteditor
{
    background-color:White;
}


ifadesini eklemekten ibaret...

24 Nisan 2012 Salı

SiteMapDataSource ile Menü Tasarımı

   Menü tasarlamanın pek çok farklı yolu vardır. Bunlardan birisi de SiteMapDataSource kullanmak. Öncelikle sayfamıza 1 Menu bir de SiteMapDataSource kontrolü yerleştirelim. Ardından Menu Tasks bölümünden Choose Data Source alanından ilgili SiteMapDataSource kontrolümüzü seçelim. Projemize Add - New Item diyerek yeni bir sitemap dosyası ekleyelim. Dosyanın içeriğini istediğiniz şekilde şekillendirin. Örneğin :


<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >


<siteMapNode url="default.aspx" title="Anasayfa"  description="Burası ana sayfa">
        <siteMapNode url="Hakkimizda.aspx" title="Hakkımızda"  description="Bu sayfa site sahibi hakkında bilgi veriyor." />    
        <siteMapNode url="Uyelik.aspx" title="Üye Ol"  description="Üye Ol" />
        <siteMapNode url="Yardim.aspx" title="Yardım"/>
        <siteMapNode url="Iletisim.aspx" title="İletişim" />      
 <siteMapNode  title="Üye" description="Üyelerin alanı" roles="Uye">
            <siteMapNode url="~/Uye/Profilim.aspx" title="Profilim"/>
        </siteMapNode>

</siteMapNode>

Sitemap dosyanız yukarıdakine benzer bir tasarıma sahip olmalı. Şimdi gelelim web.config ayarına:

 <system.web>
      <siteMap>
          <providers>
              <add name="SiteMapDataSourceDefault" siteMapFile="Default.sitemap"
                    type="System.Web.XmlSiteMapProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" securityTrimmingEnabled="true"/>              
          </providers>
       </siteMap>
 </system.web>


   SiteMapDataSource kontrolünüzün SiteMapProvider özelliğine SiteMapDataSourceDefault adını verdim. Siz farklı bir isim verebilirsiniz. siteMapFile kısmında yukarıda da gördüğünüz gibi sitemap dosyamızın adını veriyoruz.

   Bir menü tasarlarken kullanıcılarımız bazı sayfalara bu menü aracılığıyla erişebilmelerini engellemek isteyebilir. Örneğin bir yönetici rolüne sahip kullanıcının hemen hemen bütün sayfalara erişebilmesini isteriz. Bazı kullanıcıların da bazı sayfalara erişmesini bazılara ise erişmemesini isteyebiliriz. Bunu yapmanın yolu roles özelliğinden geliyor. Yukarıda roles="Uye" diyerek üye rolüne sahip kullanıcıların bazı sayfaları görmelerini sağladık. Üye rolüne sahip olmayanlar bu sayfaları göremeyecek. 

   Burada dikkat edilmesi gereken bir konu var. O da <siteMapNode  title="Üye" description="Üyelerin alanı" roles="Uye"> alanında url kısmının olmaması gerekiyor. Eğer url kısmı eklerseniz menüde gözükecektir ve roles özelliğini kullanmanın hiçbir anlamı kalmayacaktır. Burada rolden kastedilen aspnet_Roles tablomuzda veya "Web Site Administration Tool" aracında gördüğümüz rollerdir. Dikkat edilmesi gerek bir diğer konu da web.config ayarlarında securityTrimmingEnabled="true" özelliğinin true yapılmış olması gerekiyor. Aksi taktirde hata mesajı ile karşılaşabilirsiniz.

17 Nisan 2012 Salı

AjaxControlToolkit.BalloonPopupExtender missing required BalloonPopupControlID property value for LinkButton1_BalloonPopupExtender. Parameter name: BalloonPopupControlID

Hata Mesajı : AjaxControlToolkit.BalloonPopupExtender missing required BalloonPopupControlID property value for LinkButton1_BalloonPopupExtender.
Parameter name: BalloonPopupControlID

Çözüm Önerisi : BalloonPopupExtender kullanırken eğer BalloonPopupControlID değerini girmezseniz böyle bir hata mesajı ile karşılaşırsınız. Çözüm gayet basit. Balonun içinde göstermek istediğiniz kontrolün ID değerini bu özelliğe gireceksiniz.(Genellikle Panel kullanılıyor.)

15 Nisan 2012 Pazar

Invalid postback or callback argument


Hata Mesajı : Invalid postback or callback argument.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: Invalid postback or callback argument.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


Çözüm Önerisi : Yukarıdaki gibi bir hata mesajı ile karşılaşıyorsanız 
<pages enableEventValidation="false" /> yaparak sorununuzu çözebilirsiniz.

CausesValidation

CausesValidation ASP.NET butonlarına ait bir özellik. Bu özellik iki değer alabiliyor : True ve False olmak üzere... Varsayılan olarak True değerine sahip. Eğer sayfanızdaki hata kontrollerini iptal etmek istiyorsanız bu özelliği false yapabilirsiniz.

12 Nisan 2012 Perşembe

AnimationExtender

   AnimationExtender basit ve bildirimsel tarzda sayfalar oluşturabilmek için güçlü animasyon çerçevesini kullanmamıza izin veren basit bir extender türüdür. Hedef kontrol tarafından OnLoad, OnClick, OnMouseOver veya OnMouseOut gibi olayların meydana gelmesiyle animasyonları oynatır.

   Animasyonlar oynatılırken bildirimli belirtilen XML kullanılır.

Özellikler:


  • TargetControlID - Animasyonların görüntülenmesi için olayların meydana geleceği kontrolün ID değerini alır. (Bu aynı zamanda animasyonların varsayılan hedefidir.)
  • OnLoad - Sayfa yüklendiğinde oynatılan kısa süreli genel animasyon.
  • OnClick - Hedef kontrol tıklandığında oynatılan genel animasyon.
  • OnMouseOver - Fare hedef kontrol üzerinde dolaştığında oynatılan genel animasyon.
  • OnMouseOut - Fare hedef kontrolden ayrıldıktan sonra oynatılan genel animasyon.
  • OnHoverOver - OnMouseOver olayına benziyor. Aradaki fark, OnHoverOut olayı meydana gelince durmasıdır.
  • OnHoverOut - OnMouseOut olayına benziyor. Aradaki fark OnHoverOver olduğunda durmasıdır.



11 Nisan 2012 Çarşamba

BalloonPopup Extender

   BalloonPopupExtender kontrolü içerisinde herhangi bir değer bulunan bir açılan pencere gösterir. Örneğin, BalloonPopupExtender kontrolünü herhangi bir TextBox kontrolüne tıklandığında bir yardım bilgisini göstermek için kullanabilirsiniz. 

   BalloonPopupExtender 3 farklı görüntüleme sitilini destekliyor : Balloon, Rectangle ve Custom. 3 farklı boyut seçeneğinden birini seçebilirsiniz : Small(küçük), Medium (orta), Large(büyük).Eğer sitil olarak Custom seçeneğini seçerseniz kendi tanımladığınız bir sitili kullanabilirsiniz. Bu durumda, CustomCssUrl özelliğini bir css ifadesi atamalısın. 5 farklı pozisyona ayarlayabilirsiniz : TopLeft(Yukarı-Sol), TopRight(Yukarı-Sağ), BottomLeft(Aşağı-Sol), BottomRight(Aşağı-Sağ) ve Auto (otomatik). Eğer Auto seçeneğini seçerseniz otomatik olarak uygun boş bir alanda açılır. Hangi durumda tetikleneceğini seçebilirsiniz : MouseOver(fare üzerine geldiğinde), Focus(odaklandığında) ve  Click(tıklandığında) olayları. Balloon Popup haricinde bir yere tıklarsanız kaybolur.

Özellikler:

  • TargetControlID - İlişkilendirilecek kontrolün ID değeri.
  • BalloonPopupControlID - Gösterilecek kontrolün ID değeri. (Genellikle Panel)
  • OffsetX/OffsetY - Balon açılır pencerenin hedef kontrolden ne kadar uzakta açılacağını belirtir. Varsayılan değeri 0'dır.
  • CustomClassName - Eğer sitil olarak Custom seçilmişse, sitilin css sınıfının adını alır.
  • UseShadow - Balonda gölge efektinin olup olmayacağını belirtir. Varsayılan değeri True.
  • ScrollBars - Eğer balon içindeki değer balondan taşarsa bu durumda nasıl bir gösterim olacağı bu özellik sayesinde belirlenir. 5 farklı değer alabilir. Horizontal, Vertical, None, Both, Auto. Varsayılan değeri Auto.
  • DisplayOnMouseOver - True değeri seçilirse balon fare hedef kontrolün üzerine gelince gözükür. Varsayılan değeri False.
  • DisplayOnFocus - Focus olayı meydana geldiğinde gözükür. Varsayılan değeri False.
  • DisplayOnClick - Fare ile tıklandığında balon gözükür. Varsayılan değeri True.
  • Animations - Eğer animasyon kullanmak istiyorsak bu özelliği kullanmalıyız.

   Geçtiğimiz günlerde keşfettiğim bir özelliği sizlerle paylaşmak istiyorum. Bu da verileri dinamik olarak bir web servis aracılığıyla getirmek. Peki bunu nasıl yapacağız :


  • DynamicServiceMethod : Servis metodumuzu buraya yazıyoruz Örneğin  DynamicServiceMethod="GetValues"
  • DynamicServicePath : Web servisimizin path değerini veriyoruz. Örneğin: DynamicServicePath="WebService1.asmx"
  • DynamicControlID : Verilerin gösterileceği kontrolün adı. Bir label kontrolü olabilir. Örneğin: DynamicControlID="Label1".
  • CacheDynamicResults : Verileri önbelleklemek istiyorsanız bu özelliği true yapabilirsiniz. Örneğin: CacheDynamicResults="true".
  • DynamicContextKey : Servis metodunuzda parametre olarak kullanmak istediğiniz değer. Eval ile bir veri de bağlayabilirsiniz. Örneğin : DynamicContextKey='<%# Eval("Ad") %>' şeklinde kullanabilirsiniz veya DynamicContextKey="Parametre" . Servis metodunda parametreyi kullanırken GetValues(string contextKey) şeklinde kullanabilirsiniz. Parametre adını değiştirmeyin, yani contextKey olarak kullanın. Farklı parametre adları metodun çalışmasına engel olabilir.
Not  : Bu özelliği kullanabilmek için web servisleri hakkında az çok bir şeyler bilmeniz gerekiyor. Eğer bu konuda hiç bir şey bilmiyorsanız önce web servislere bir göz atmanızı tavsiye ederim. Servis metodunuzun hatasız çalışması gerekiyor. En ufak bir hatada sonuçları göremezsiniz. Bazen bir hata mesajı bile alamayabilirsiniz. Servis metodunuzun çalıştığından ve yolları doğru tanımladığınızdan emin olun. Örneğin asmx uzantılı servis dosyanız bir klasörün altında ise DynamicServicePath ="KlasörAdi/WebService1.asmx" şeklinde olmalı.








Must pass CustomClassName value

Hata Mesajı : Must pass CustomClassName value.

Çözüm Önerisi : BalloonPopup extender kullanırken eğer CustomCssUrl özelliğine bir değer atamışsak, CustomClassName özelliğine de bu css dosyasının içerisinde tanımlı bir css sınıfının adını tanımlamalıyız. Yoksa yukarıdaki gibi bir hata mesajıyla karşılaşabiliriz.