28 Kasım 2011 Pazartesi

Asp.net IsPostBack Özelliği

   Sayfanın gene kendine yönlenmesine kısaca postback adı verilir. IsPostBack, page nesnesinin bir özelliğidir. Sayfanın geri postalama durumunu yönetir. Sayfanın ilk yüklendiği durum ile daha sonradan PostBack(geri bildirim) yapılması durumundaki işlemler bu özellik sayesinde belirlenebilir. Peki, bunun anlamı nedir?

Konuyu anlamak için bir örnek yapalım.


       protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
                LabelMesaj.Text = "Sayfa postback olmadı.";
                
        }


        protected void ButtonGonder_Click(object sender, EventArgs e)
        {
            if(Page.IsPostBack)
                LabelMesaj.Text = "Sayfa postback oldu.";
        }

Sayfama bir label bir de buton ekliyorum. Sayfa ilk yüklendiğinde şöyle bir ekranla karşılaşıyorum :

Butona bastıktan sonra ise şöyle bir ekranla karşılaşıyorum:

   Butona bastıktan sonra sayfam sunucuya gönderiliyor. Sunucu sayfayı işledikten sonra geri gönderiyor. Sunucunun sayfayı geri göndermesi işlemine postback adı veriliyor. Page.IsPostBack bool bir değer tutuyor. Eğer sayfam postback olmuşsa true, değilse false değerini alıyor.


27 Kasım 2011 Pazar

Asp.net Ajax AsyncFileUpload

   AsyncFileUpload dosyaları sunucuya senkron bir şekilde göndermenizi sağlayan bir ASP.NET Ajax kontrolüdür. Dosya yükleme işleminin sonuçları hem sunucu hem de istemci tarafında kontrol edilebilir.

Olaylar 
  • UploadComplete - Dosya başarılı bir şekilde yüklendiğinde sunucu tarafında meydana gelir.
  • UploadedFileError - Yüklenen dosya bozulduğunda sunucu tarafında meydana gelir.
Özellikleri
  • CompleteBackColor - Yükleme tamamlandığında kontrolün arkaplan rengidir. Varsayılan değeri 'Lime'.
  • ContentType - İstemciden gönderilen dosyanın MIME içerik tipi bilgisini getirir. (Örneğin : image/jpeg)
  • ErrorBackColor - Dosya gönderildiğinde hata oluşursa kontrolün arkaplan rengi. Varsayılan değeri 'Red'.
  • FileContent - Yüklenen bir dosyanın içindekileri okuyabilmek için hazır hale getirmeye yarayan bir stream nesnesi getirir.
  • FileName - İstemci tarafından yüklenen dosyanın adını getirir.
  • HasFile - Kontrolün bir dosya içerip içermediği bilgisini gösterir. Bool değer alır(True/False) Dosya varsa true, yoksa false değeri döndürür.
  • OnClientUploadComplete - Belirtilen javascript fonksiyonu yükleme işlemi başarılı bir şekilde tamamlandıktan sonra çalıştırılır. Örneğin : OnClientUploadComplete = "bitti"
 <script type="text/javascript">
            function bitti() {
                alert("Yükleme işlemi başarılı bir şekilde tamamlandı.");
            }
 </script>
  • OnClientUploadError - İstemci tarafında çalışan javascript fonksiyonunun adını alır. Yükleme işlemi sırasında bir hatayla karşılaşılmışsa çalıştırılır. Örneğin : OnClientUploadError = "hata"
 <script type="text/javascript">
             function hata() {
                alert("Yükleme işlemi sırasında hata meydana geldi.");
            }
 </script>

  • OnClientUploadStarted - Yükleme işlemi başladığında çalıştırılacak javascript fonksiyonunun adını alır. Örneğin : OnClientUploadStarted = "YuklemeBasladi"
 <script type="text/javascript">
             function YuklemeBasladi() {
                alert("Yükleme işlemi başladı.");
            }
</script>

  • PostedFile - Yüklenen dosyaya erişimi sağlayan bir HttpPostedFile nesnesini döndürür.
  • ThrobberID - Dosya yüklenirken gösterilen kontrolün ID değeridir. Örneğin : 

<asp:AsyncFileUpload ID="AsyncFileUpload2" runat="server" 
            onclientuploadcomplete="bitti" 
            onuploadedcomplete="AsyncFileUpload2_UploadedComplete" 
            onclientuploaderror="hata" onclientuploadstarted="YuklemeBasladi" 
            ThrobberID="Image1" />
<asp:Image ID="Image1" runat="server" ImageUrl="~/Resimler/ajax-loader.gif" />

  • UploaderStyle - Kontrolün görüntü sitilidir. 2 farklı değer alabilir. Traditional ve Modern. Varsayılan değeri : 'Traditional'.
 Traditional

               Modern
  • UploadingBackColor - Kontrol upload(yükleme) işlemi yaparken arkaplan rengidir. Varsayılan değeri 'White(beyaz)'.
  • Width - Kontrolün genişlik değeridir. Varsayılan değeri '355' piksel.
Metodlar
SaveAs(string filename) - Yüklenen bir dosyanın içindekileri kaydeder.

Yüklenen Resmi Kayıt Etme

protected void AsyncFileUpload1_UploadedComplete
 (object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{  
  if (AsyncFileUpload1.HasFile)
  {
    string strPath = MapPath("~/Uploads/") + Path.GetFileName(e.filename);
    AsyncFileUpload1.SaveAs(strPath);
  }
}
   Emin olmamakla birlikte AsyncFileUpload kontrolü büyük ihtimal dosyayı öncelikle sunucunun belleğine yüklüyor. Ardından da yukarıdaki SaveAs komutu ile ilgili klasöre kayıt ediyor. Eğer dosyayı veritabanına kaydetmek istiyorsanız dosyanın adını(AsyncFileUpload1.FileName) kaydederek ilgili resime ihtiyacınız olduğunda ulaşabilirsiniz. Örneğin bir ImageField alanında bir resmi göstermek istiyorsanız Eval("profilFotograf", "~/Uploads/{0}") şeklinde bağlayarak gösterebilirsiniz. profilFotograf alanı veritabanından gelecektir ve ilgili dosyanın adını uzantısıyla birlikte getirecektir. Örneğin : "kalem.jpg" şeklinde.

NOT : Dosyayı klasöre kayıt etmeden önce klasörün yazma izni olup olmadığını kontrol ediniz. Aksi taktirde hata ile karşılaşabilirsiniz.

Dosyanın Uzantısını Kontrol Etme

   AsyncFileUpload kontrolü ile dosya yüklerken dosyanın uzantısını kontrol etmek isteyebiliriz. Bunun için farklı yoller denemek mümkün. Aşağıda dosya formatının resim olup olmadığı kontrol ediliyor. Eğer resim formatındaysa kayıt işlemi gerçekleşiyor.
protected void AsyncFileUpload1_UploadedComplete
 (object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{  
  if (AsyncFileUploadProfilFotografDuzenle.ContentType.Split('/').Contains("image"))
  {
    string strPath = MapPath("~/Uploads/") + Path.GetFileName(e.filename);
    AsyncFileUpload1.SaveAs(strPath);
  }                
  else
  {
     Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Success", "<script        type='text/javascript'>alert('Dosya resim formatında olmalı. (jpeg, jpg, png vs.)');</script>");
}

Dosyanın Boyutunu Kontrol Etmek


protected void AsyncFileUpload1_UploadedComplete
 (object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{  
  if (AsyncFileUploadProfilFotografEkle.PostedFile.ContentLength > 1024000)
                    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Success", "<script type='text/javascript'>alert('Dosyanın boyutu en fazla 1 mb olabillir.');</script>");
}

   Bir uygulama tasarlarken belleği etkin kullanmak temel ilkelerden biridir. Sunucumuzdaki alan sınırlıdır. Bu yüzden de bazı dosyaların boyutuna sınırlar getirildiğini internetteki pek çok sitede görebilirsiniz. Burada dosyanın maksimum boyutunu 1mb = 1024000 byte olarak belirledik. Siz bu değeri istediğiniz gibi değiştirebilirsiniz.

Yüklenen Bir Dosyayı Silmek


SqlConncetion   baglanti = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);  // Bağlantı cümlesi
   
baglanti.Open();  
            SqlCommand komut = new SqlCommand("select ResimAd from Resim where ResimNo = " + Session["ResimNo"] + "", baglanti);
            SqlDataReader reader = komut.ExecuteReader();
            if (reader.Read())
            {
                string ResimAd = reader["ResimAd"].ToString();
                if (String.IsNullOrEmpty(ResimAd) == false)
                {
                    System.IO.File.Delete(Server.MapPath("~/Resimler/" + ResimAd));
                }
            }
            baglanti.Close();


  Bazen yüklediğimiz dosyayı silmek isteyebiliriz. Yukarıda veritabanından silmek istediğimiz dosyanın adını getirip ilgili klasörden nasıl silebileceğimizi gördük. Resim dosyası haricinde diğer dosyalar için de aynı kodları ve mantığı kullanabilmek mümkün. AsyncFileUpload kontrolüyle yeni bir dosya yüklendiğinde de eski dosya varsa silinmesini isteyebiliriz. Bunun için yukarıdaki kodları UploadedComplete yordamının içine eklemeniz yeterli olacaktır. Tabi yeni dosya adını da veritabanına eklemeyi unutmuyoruz.


 Not: Bazı durumlarda herhangi bir hata mesajıyla karşılaşmamamıza rağmen dosya yükleme işlemi gerçekleşmeyebilir. Bu durumda muhtemelen sayfanızda bir hata var demektir. UpdatePanel içerisindeki kontrollerinizde hata olduğunda hata mesajı almayabiliyorsunuz. Böyle bir durumla karşı karşıya kalırsanız sayfanızı tekrar gözden geçirin

26 Kasım 2011 Cumartesi

Asp.net Ajax AlwaysVisibleControl

   AlwaysVisibleControl extender sayfanın istediğimiz bir bölümünde istediğimiz şeyleri göstermemize yarayan bir kontroldür. Sayfada aşağı-yukarı gittiğimizde(kaydırma çubuklarıyla) veya sayfanın boyutunu değiştirdiğimizde içeriğimizin sayfamızın istediğimiz yerinde sürekli gösterilmesini sağlar.

   Herhangi bir asp.net kontrolü için kullanılabilinir. Yatay veya dikey eksende istediğimiz pozisyonda sürekli gözükmesini sağlayabilir.

Özellikleri : 

  • TargetControlID - Sürekli gösterilmesini isteğimiz kontrolün ID değerini veriyoruz.
  • HorizantalOffset - Hedef kontrolümüzün tarayıcının yatay ekseninden ne kadar uzakta bulunmasını istiyorsak ona göre istediğimi değeri veriyoruz. Varsayılan değeri 0'dır. piksel cinsinden değer alır.
  • HorizontalSide - Yatay eksen değerini belirtir. 3 farklı değer alabilir : Left(sol), Right(sağ), Center(merkez) Varsayılan değeri Left.
  • VerticalOffset - Hedef kontrolümüzün tarayıcının dikey ekseninden ne kadar uzakta bulunmasını istiyorsak ona göre istediğimi değeri veriyoruz. Varsayılan değeri 0'dır. piksel cinsinden değer alır.
  • VerticalSide - Dikey eksen değerini belirtir. 3 farklı değer alabilir : Top(yukarı), Middle(orta), Bottom(aşağı) Varsayılan değeri Top.
  • ScrollEfectDuraction - Tarayıcın kaydırma çubuklarıyla hareket ettirilmesi sırasında hedeflenen kontrole uygulanacak efekt süresini belirtiyor. Varsayılan değeri 0,1 saniye.
  • UseAnimation - Kontrol pozisyon değiştirdiğinde animasyon uygulanıp uygulanmayacağı seçiliyor. Varsayılan değeri false.
 <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
                    Text="güncelle" />
                <asp:AlwaysVisibleControlExtender ID="Button1_AlwaysVisibleControlExtender" 
                    runat="server" Enabled="True" HorizontalSide="Center" TargetControlID="Button1" 
                    UseAnimation="True" VerticalSide="Middle">





25 Kasım 2011 Cuma

Ajax Accordion Extender

   Accordion birden fazla panelin her seferinde bir tanesini göstermemize izin veren bir web kontrolüdür. CollapsiblePanel kontrolüne benzer bir yapısı vardır. Aynı anda sadece bir panelin genişlemesine izin verilir. Accordion, AccordionPane kontrolleri için geliştirilmiştir. Her bir AccordionPane kontrolü başlık ve içerik bilgileri için template(şablon) bulundururlar.

AutoSize:
3 çeşit AutoSize modunu destekler.

  • None - Accordion kısıtlama olmadan büyüyüp küçülebilir. 
  • Limit - Accoridion belirtilen yükseklik limitinin üzerinde büyüyemez. Eğer içeriğin boyutu yükseklikten fazla ise bu durumda bir scroll bar(kayan çubuk) aracılığıyla içeriği görebilmek mümkündür.
  • Fill - Accordion her zaman aynı yüksekliğinde kalır. 
  1. SelectedIndex - Başlangıçta hangi AccordionPane gösterileceğini belirtir.
  2. HeaderCssClass - Başlık için hangi css sınıfının kullanılacağını belirtir. Bütün AccordionPane elemanları için tek bir css sınıfı belirtilebileceği gibi ayrı ayrı da belirlenebilir.
  3. HeaderSelectedCssClass - Seçili olan başlığın css sınıfı değeri girilir. Bütün AccordionPane elemanları için tek bir css sınıfı belirtilebileceği gibi ayrı ayrı da belirlenebilir.
  4. ContentCssClass - İçerik için kullanılacak css sınıfıdır. Bütün AccordionPane elemanları için tek bir css sınıfı belirtilebileceği gibi ayrı ayrı da belirlenebilir.
  5. FadeTransitions - Bool değer alır. True değerini alırsa geçişler arasında efekt uygular. False değerinde ise normal geçiş uygular. Varsayılan(default) eğeri false.
  6. TransitionDuration - Geçişler arasındaki süreyi belirtir. Milisaniye cinsinden değer alır. Varsayılan(default) değeri 500(yani 0,5 saniye).
  7. FramesPerSecond - Geçiş animasyonlarında saniye başına ne kadar frame düşeceğini belirtir. Varsayılan(default) değeri 15.
  8. RequireOpenedPane - Açık olan AccordionPane elemanına tıklandığında kapanıp kapanmayacağını belirliyor. Varsayılan(default) değeri true. True değeri alınca açık olan AccordionPane elemanının başlığına tıklanınca kapatmıyor fakat false olunca kapatıyor.
  9. SuppressHeaderPostbacks - Eğer başlığınızda bir bağlantı(link) varsa bu değer true olduğunda bağlantının çalışmasını önler. Varsayılan olarak false değerine sahiptir.
  10. Panes - AccordionPane kolleksiyonun bulunduğu kısımdır. AccordionPane elemanları ve özellikleri üzerindeki birtakım değişiklikler bu alan üzerinden yapılabilinir.

 <style type="text/css">  

        .accordion {  

            width: 400px;  

        }  

          

        .accordionHeader {  

            border: 1px solid #2F4F4F;  

            color: white;  

            background-color: #2E4d7B;  
            font-family: Arial, Sans-Serif;  
            font-size: 12px;  
            font-weight: bold;  
            padding: 5px;  
            margin-top: 5px;  
            cursor: pointer;  
        }  
          
        .accordionHeaderSelected {  
            border: 1px solid #2F4F4F;  
            color: white;  
            background-color: #5078B3;  
            font-family: Arial, Sans-Serif;  
            font-size: 12px;  
            font-weight: bold;  
            padding: 5px;  
            margin-top: 5px;  
            cursor: pointer;  
        }  
          
        .accordionContent {  
            background-color: #D3DEEF;  
            border: 1px dashed #2F4F4F;  
            border-top: none;  
            padding: 5px;  
            padding-top: 10px;  
        }  
    </style>  

<asp:Accordion ID="Accordion1" runat="server" ContentCssClass="accordionContent"
            EnableTheming="False" FadeTransitions="True" FramesPerSecond="0" HeaderCssClass="accordionHeader"
            HeaderSelectedCssClass="accordionHeaderSelected" Height="200px" Width="500px"
            AutoSize="Limit" RequireOpenedPane="False" SuppressHeaderPostbacks="True">
            <Panes>
                <asp:AccordionPane ID="AccordionPane1" runat="server" ContentCssClass="" HeaderCssClass=""
                    BackColor="#99FFCC" BorderColor="#CC33FF" BorderStyle="Double" BorderWidth="2px"
                    Font-Bold="True" Font-Italic="True" Font-Names="AngsanaUPC" Font-Size="Medium"
                    ForeColor="Blue">
                    <Header>
                        Başlık1</Header>
                    <Content>
                        İçerik1</Content>
                </asp:AccordionPane>
                <asp:AccordionPane ID="AccordionPane2" runat="server" ContentCssClass="" HeaderCssClass="">
                    <Header>
                        Başlık2</Header>
                    <Content>
                        İçerik2</Content>
                </asp:AccordionPane>
                <asp:AccordionPane ID="AccordionPane3" runat="server" ContentCssClass="" HeaderCssClass="">
                    <Header>
                        Başlık3</Header>
                    <Content>
                        İçerik3</Content>
                </asp:AccordionPane>
            </Panes>
        </asp:Accordion>






24 Kasım 2011 Perşembe

Asp.net Ajax SlideShow Extender

   SlideShow image kontrollerinde kullanılan bir extender türüdür. Buttonlar kullanarak ileri, geri, dur, oynat seçenekleriyle dinamik bir slide gösterisi hazırlamak mümkün. Çalıştırıldığında otomatik başlatma seçeneği bulunmaktadır. Döngü şeklinde slide gösterisini sürekli göstermek mümkün. Ayrıca interval değeriyle resimlerin ne kadar süre arayla gösterilebileceğini ayarlayabilirsiniz. Bir page metod veya web servis kullanarak slide showdaki resimlerin gösterimini sağlayabilirsiniz.



SlideShowExtender.aspx :


 <asp:Image ID="Image1" runat="server" Height="400px" 
            ImageUrl="anasayfa.png" Width="400px"/>
                <asp:SlideShowExtender ID="Image1_SlideShowExtender" runat="server" 
                    AutoPlay="True" Enabled="True" ImageDescriptionLabelID="LabelDescription" Loop="True" 
                    NextButtonID="ButtonIleri" PlayButtonID="ButtonPlay" PlayButtonText="Başlat" 
                    PreviousButtonID="ButtonGeri" ImageTitleLabelID="LabelTitle" SlideShowServiceMethod="GetSlides" 
                    SlideShowServicePath="SlideShow.asmx" StopButtonText="Dur" 
                    TargetControlID="Image1" PlayInterval="1000" >
                </asp:SlideShowExtender>
                <br />
                <asp:Label ID="LabelDescription" runat="server" Text="Label"></asp:Label>
                <asp:Label ID="LabelTitle" runat="server" Text="Label"></asp:Label>
                <br />
                <asp:Button ID="ButtonGeri" runat="server" Text="Geri" />
                <asp:Button ID="ButtonPlay" runat="server" Text="Play" />
                <asp:Button ID="ButtonIleri" runat="server" Text="İleri" />

SlideShow.asmx:




[WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public AjaxControlToolkit.Slide[] GetSlides()
        {
            AjaxControlToolkit.Slide[] imgSlide = new AjaxControlToolkit.Slide[4];


            imgSlide[0] = new AjaxControlToolkit.Slide("anasayfa.png", "Resim 2 Title", "Resim 2 Description");
            imgSlide[1] = new AjaxControlToolkit.Slide("Desert.jpg", "Resim 3", "Resim 3");
            imgSlide[2] = new AjaxControlToolkit.Slide("img02.jpg", "Resim 4", "Resim 4");
            imgSlide[3] = new AjaxControlToolkit.Slide("img03.jpg", "Resim 5", "Resim 5");


            return (imgSlide);           
        }


SlideShow Özellikleri:



  • SlideShowServicePath - Webservice bulunduğu dosya yolu. SlideShow Extender resimleri bu servisimiz aracılığıyla alıyor. Yukarıdaki örneğimizde  SlideShowServicePath="SlideShow.asmx" olarak tanımlamıştık. Not : Servis dosyamızın aspx sayfamızla aynı klasörün içerisinde bulunması gerekir. Farklı bir klasörde ise örneğin ajax adlı klasörün içerisinde. SlideShowServicePath="ajax/SlideShow.asmx" şeklinde yazılmalıdır.
  • SlideShowServiceMethod - Resimlerimizin çağrıldığı web servisi metodumuz. Metodun ismi(GetSlides) değiştirilebilir fakat parametre adı ve dönen tip uygun olmalıdır. İnternetteki bazı örneklerde metot static olarak tanımlanmıştır. Benim denemelerimde static metot çalışmıyordu. Yukarıdaki örneğimizde SlideShowServiceMethod="GetSlides" olarak tanımlamıştık.
  • NextButtonID - Bir sonraki resmi görmemizi sağlayan butonun ID değeri. Yukarıdaki örneğimizde NextButtonID="ButtonIleri" olarak tanımlamıştık.

  • PlayButtonID - Slide gösterisini başlatıp durdurabilmemizi sağlayan butonun ID değerini veriyoruz. 

  • PreviousButtonID - Bir önceki resmi görebilmemizi sağlayan butonun ID değerini veriyoruz.




  • PlayButtonText - Play butonunun text alanı. Slide show durduğunda gösterilir. (PlayButtonText="Başlat") 

  • StopButtonText - Play buttonunun text alanı. Slide oynatılırken gösterilir. (StopButtonText="Dur") 

  • PlayInterval - Slide gösterisi oynatılırken resimler arasındaki geçiş süresini belirtir. Milisaniye cinsinden değer alır. (PlayInterval="1000") Örneğin 1000 milisaniye 1 saniyeye tekabül eder.

  • ImageTitleLabelID - Resimlerin başlıkları bu etiket(label) aracılığıyla gösterilebilir. Title değerini servis metodumuzda belirtiyoruz. ( ImageTitleLabelID="LabelTitle") Servis metodunda Resim2, Resim3 olarak belirlenen 2. parametre alanıdır.

  • ImageDescriptionLabelID - Resimlerle ilgili açıklama bilgilerinin gösterildiği etiketin(label) ID değerini veriyoruz. (ImageDescriptionLabelID="LabelDescription" ) Servis metodumuzdaki 3. parametre alanıdır.

  • Loop - Bool değer alır. True değeri verildiğinde slide show durdurulana kadar gösteri devam eder. False değeri verildiğinde ise resimler bittiğinde gösterir durur. Varsayılan değeri false.Loop="True" 

  • AutoPlay - Varsayılan değeri false. True değeri aldığında sayfa yüklenir yüklenmez gösteri çalışmaya başlar. False değerini aldığındaysa play butonuna basılında gösterim başlar. AutoPlay="True"





22 Kasım 2011 Salı

Asp.net Validation Kontrolleri Display Özelliği


   Asp.Net kontrollerinde hata kontrollerinde validation kontrollerini sıklıkla kullanırız. Bugün size bu kontrollerin bir özelliğinden bahsetmek istiyorum.Display özelliği... Display özelliği 3 farklı değer alır. None, static ve dynamic.

None değerini seçerseniz eğer hata mesajı gösterilmez. Setfocus değerini seçmişseniz sadece seçtiğiniz kontrole focus yapar.

Static değerini seçerseniz eğer hata mesajı buton tıkladıktan sonra gözükür. Static değeri default(varsayılan) değerdir.

Dynamic özelliği seçtiğinizde ise hata mesajı o özellikten başka bir özelliğe geçtiğinizde veya herhangi bir kontrole tıkladığınızda anında gözükür. Bu üç özellik de uygulamanın ihtiyaçlarına ve sizin tercihlerinize göre farklı yerlerde ve şekillerde kullanılabilir.

Plesk panelde veritabanı nasıl restore edilir


1. İlk olarak plesk panelde oturum açarak başlayalım.

2.Domains alanına tıklayın.

3.Gerekli olan domain adına tıklayın.
4."Backup Manager" alanına tıklayın.


5. "Database Backup Repository" alanına tıklayın.
6.Öncelikle "Database" kısmından restore edeceğimiz bir veritabanını seçiyoruz. Ardından "Upload Backup File alanını seçiniz."

Note : Bu alanın gözükmesi için öncelikle sisteminizde bir veritabanının olması lazım. Eğer daha önceden hiç veritabanı oluşturmadıysanız öncelikle yeni bir veritabanı oluşturun. Ardından "Upload Backup File" alanının seçilebilir hale geldiğini göreceksiniz.
7.Veritabanı adımızı seçip sonra bilgisayarımızdan ".bak" uzantılı backup dosyamızı seçiyoruz."Restore database backup immediately upon uploading " alanını seçmemiz lazım yoksa restore yapmıyor.
8. Veritabanınızın yüklenip yüklenmediğini görmek için asp.net enterprise manager aracından bakabilirsiniz. Yüklenmişse tablo, view, stored procedure gibi alanlarınız gözükecektir.

Asp.Net 'de CreateUserWizard ile Recaptcha kullanımı


protected void RegisterUser_CreatingUser(object sender, LoginCancelEventArgs e)
{
  // Hata mesajı alırsanız var yerine Recaptcha.RecaptchaControl ifadesini de yazabilirsiniz
  var captcha =  (Recaptcha.RecaptchaControl)RegisterUser.CreateUserStep.ContentTemplateContainer.FindControl("recaptchaCtl");
  if (null == captcha)
  {
    e.Cancel = true;
    return;
  }
  captcha.Validate();
  if (!captcha.IsValid)
  {
    //Buraya hata mesajınızı yazın.
    e.Cancel = true;
    return;
  }
  e.Cancel = false;
}

Asp.Net DropDownList AppendDataBoundItems

   Geçtiğimiz günlerde keşfettiğim bir özelliği sizlerle paylaşmak istiyorum. Web sitemde il, ilçe ve semt alanlarını düzenlerken kayıtları dropdownlist ile veritabanından çekiyordum. İlk alana genellikle "Seçiniz" yazısını veya boşluk koyarlar. Ben de boşluk koymak istiyordum. Dropdownlist'in AppendDataBoundItems özelliği sayesinde bunu yapabileceğimi keşfettim. Normalde veritabanından bir dropdownlist'e veri bağladığımızda edit items kısmından veri eklememize müsaade etmiyor. AppendDataBoundItems özelliği false olduğu için. AppendDataBoundItems özelliği default(varsayılan) olarak false değerine sahip. Bunu true yaptıktan sonra edit items kısmından istediğini değerleri ekleyebilirsiniz.

GridView İçindeki Kontrollere Erişmek

Gridview içindeki kontrollere erişmek için son birkaç gündür baya bir uğraştım ve en sonunda bir yolunu buldum. Aslında birkaç yöntem var : 
1. yöntem : 
Gridview1.controls[0].controls[0].FindControl("Bulmak istediğiniz kontrolün adı")
Örneğin :
TextBox textbox1 = (TextBox)Gridview1.controls[0].controls[0].FindControl("textbox1");
veya doğrudan özelliğe de erişmek mümkün
( (TextBox)Gridview1.controls[0].controls[0].FindControl("textbox1")).Text = "bla bla";
2. yöntem : 
GridView1.Rows[index].Findcontrol("Erişmek istediğiniz kontrol adı");
index : ilgili index değeri. Mesela eklemek istiyorsanız eklemek istediğiniz satırın index değeri. Denemek için 0 değerini verebilirsiniz. Örneğin :
TextBox textbox1 = (TextBox)GridView1.Rows[0].Findcontrol("textbox1");


Güncelleme işlemi yaparken şöyle bir ifade işinize yarayabilir:


GridView1.Rows[GridView1.EditIndex].Findcontrol("Erişmek istediğiniz kontrol adı"); 
FindControl metodu genellikle bir GridView kontrolü içine template olarak başka bir kontrol eklediğimizde işimize yarıyor. Dışarıdan GridView içine yerleştirdiğimiz bu kontrollere erişemiyoruz doğrudan.

Bu işlemleri yaparken

Object reference not set to an instance of an object

gibi bir hata mesajıyla karşılaşabiliyoruz. Bu mesaj bize nesnemize erişilemediğini söylüyor.


  • Eğer GridView kontrolümüzün başlığına erişmek istiyorsak :
GridView.HeaderRow.FindControl("Erişmek istediğiniz kontrolün adı")


diyerek ulaşabiliriz.



  • Eğer tablodaki herhangi bir kayıdın adına ulaşmak istiyorsanız :
foreach (GridViewRow row in GridViewRol.Rows)
                {
                    TableCell cell = row.Cells[1];
                    Label lbl = (Label)cell.Controls[1];                
                }
Biz burada GridView içerisindeki bütün kayıtlara sırayla ulaşıyoruz. Burada 1 nolu hücreye ulaşıyoruz. Hücreler 0 nolu indexten başlar. (en soldaki 0) lbl.Text diyerek istediğini veriye ulaşabilirsiniz.