Geliştirmekte olduğum bir projede kullanıcının linke tıklaması sonucu  popup pencere açıp; sonrasında popup içerisindeki dropdownlist’den bir değer alıp; kullanıcının butona tıklaması neticesinde popup’ın kapanması ve bir önceki yani geldiği sayfanın yenilenmesi gerekiyordu.
Örnek projemdeki mantık kısaca şöyle: Bir portal uygulaması ve bu portal içerisinde üyelerimiz mevcut. Üyelerin kendi alanları var ve bu alanlar için ziyaretçiler yorum yapabilmekteler. Eğer üyeler isterlerse kendi yönetim panellerinden bu yorum eklenebilme özelliğini aktif ya da pasif yapabilecekler.
Kısaca senaryo bu şekilde fakat biz burada fazla ayrıntısına girmeden sadece asıl olayın uygulanış biçimini göreceğiz. Bu yüzden veritabanı ile ilgili kısımlara burada değinmeyeceğim asıl işi yapan javascript kısmını anlatacağım.

Öncelikle iki sayfamız olacak. Birincisi üyelerin yönetim panelinin olduğu sayfa ikincisi de popup penceresini açtığımız sayfa.



UyePanel.aspx



<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<!--
Evet belirlenen boyutlarda popup açmamızı sağlayan OpenDetailWindow isimli javascript
fonksiyonumuz. Burada window.open() yeni bir pencere açmamızı sağlayan metod.
Açılacak olan pencerenin ne şekilde açılması gerektiğini de metoda verdiğimiz parametrelerle
sağlamış oluyoruz. Yani kısacası popup dediğimiz olayı gerçekleştirecek fonksiyonumuzu
yazıyoruz. Ben sayfamı masterpage’den türettiğim için javascript fonksiyonumu Content1
arasında yazdım. Siz duruma göre <head></head> tag’ları arasına koyabilirsiniz.
-->

<script language="javascript" type="text/javascript">

function OpenDetailWindow() {
window.open('', 'detailwindow',
'toolbar=no,scrollbars=yes,resizable=yes,width=600,height=300');

}
</script>

</asp:Content>


<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<!--
Burada bağlantımızın onclick özelliğine OpenDetailWindow isimli js fonksiyonumuzu
ve açılacak olan pencerenin ne şekilde açılması gerektiği şartını da target="detailwindow"
diyerek belirtiyoruz ve açmak istediğimiz Popup.aspx sayfasına yönlendiriyoruz.
“CommStatus” ise veritabanımda yorumların aktif/pasif olma durumunu tuttuğum alanım.
Bu değeri kod tarafından alıp literal üzerinde gösteriyorum.
-->

Yorumlar: <a href="../Popup.aspx" onclick="OpenDetailWindow()" target="detailwindow">
<asp:Literal ID="ltlAP" runat="server" Text='<%# Eval("CommStatus") %>'>
</asp:Literal></a>
</asp:Content>

Şimdi de Popup sayfamızı inceleyelim. Temel olarak projedeki popup sayfası da aşağıdaki gibiydi.



Popup.aspx



<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<!--
Buradaki fonksiyonumuz işletildiğinde popup kapanacak ve popup'ın
gelmiş olduğu sayfa yenilenecektir.
-->

<script language="javascript" type="text/javascript">
function AppClose() {
self.close();
window.opener.location.reload();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<center>
<font style="font-size: 9pt; font-weight:bold">Firmanız hakkında yapılan
yorumların yayınlanma durumunu seçiniz: </font>
<br />
<asp:DropDownList ID="ddlActivePassive" runat="server">
<asp:ListItem Value="0">Seçiniz</asp:ListItem>
<asp:ListItem Value="1">Aktif</asp:ListItem>
<asp:ListItem Value="2">Pasif</asp:ListItem>
</asp:DropDownList><br /><br />
<asp:Button ID="ButtonActivePassive" runat="server" Text="Güncelle"
onclick="ButtonActivePassive_Click" />
</center>
<!--
Şimdi asıl önemli olan noktalardan birisi de benim bu AppClose fonksiyonumu
butona tıklama sonrasında çalıştırmak isteyişim. Bu sebepten ötürü burada bir
label tanımlıyorum ve kod tarafından butona tıklama olayı gerçekleşince
label'a fonksiyonumu yazdırıyorum.
-->

<asp:Label ID="LabelJs" runat="server"></asp:Label>
</form>
</body>
</html>



Popup.aspx.cs



        protected void ButtonActivePassive_Click(object sender, EventArgs e)
{
CommActivePassiveStatus();
}

private void CommActivePassiveStatus()
{
if (ddlActivePassive.SelectedValue != "0")
{
/*
Bu kısımda eğer dropdownlist'den seçilen item "0" value değerine sahip değilse.
Seçilen aktif veya pasif değerlerini veritabanına gönderdiğimiz kod grubu olacak.
*/

/*
Ve bu işlem sonrasında label'ımıza AppClose fonksiyonumuzu <script></script>
tagları arasında yazdırıyoruz. İşin bu kısmı bana göre önemli çünkü çalışmasını
istediğimiz js fonksiyonunun hangi olay sonrasında başlamasını istiyorsak bunu
kod tarafından ayarlamış oluyoruz.
*/

LabelJs.Text = "<script>AppClose();</script>";
}

else
{
// Burda eğer dropdownlist'den seçilen value "0" ise alert ile mesajımızı verdiriyoruz.
// Tabi bunu ScriptManager sınıfı sayesinde yapıyoruz.

ScriptManager.RegisterStartupScript(Page, typeof(Page), "x", "alert('Lütfen seçim yapınız.')", true);
}
       }


Evet arkadaşlar uygulamamız bu şekilde. Buradaki yapıyı kendinize göre özelleştirip kullanabilirsiniz. Bu örneğimizde asp.net ile popup sayfası kapandıktan sonra bir önceki sayfanın yenilenmesini ve aynı zamanda da C# kod tarafından asp.net sayfalarına javascript fonksiyonlarının yazdırılmasını görmüş olduk.
Hepinize kolay gelsin. İyi çalışmalar.

 

kategoriler:  AspNet | JavaScript |

Durum Yönetimi (state management) amacıyla kullanılan Session nesnesi server taraflı olandır. Client taraflı olan durum yönetim nesnesi Cookie'lerdir. Öncelikle Session nedir? Ne işe yarar? kısaca bundan bahsedelim ve cookie ile arasındaki farklara değindikden sonra kullanımını bir uygulama üzerinde görelim.
Session:
Bir oturum nesnesidir. Ziyaretçiler bir web sunucusundan herhangi bir sayfayı talep ettiğinde, sunucu bilgisayarlar gelen ziyaretçilerin herbirine ayrı ayrı oturumlar başlatır. Peki bu farklı oturumları nasıl birbirinden ayırt etmektedir? Şöyle ki Asp.net sunucularında oturum sahiplerini tanıyabilmek için özel bir algoritma ile oluşturulan tanımlayıcı bir değer kullanılır. Bu tanımlayıcı değerlere SessionID denilmektedir. İşte ziyaretçiler bu SessionID değerlerine göre bir birbirinden ayırt edilmektedir.
Session nesneleri yardımıyla kullanıcılara ait oturum bilgileri sayfalar arasında taşınabilmektedir. Tabiki bu bilgi taşıma olayı sonsuza kadar değildir. Bu süre Session'a atanan oturum süresi boyunca devam etmektedir. Session'ın son bulması için sadece belirlenen bu oturum süresinin dolmasıda gerekmez. Kullanıcı eğer geçerli olan tarayıcıyı kapatırsa oturumu otomatik olarak son bulacaktır. Ya da sunucu bilgisayarda oluşabilecek sorunlardan dolayıda oturumlar son bulabilir. Sessionda kullanıcıya ait pek çok bilgi tutulabilir (Örn. Kullanıcının adı, soyadı, şifresi, ip adresi vs.) Genel olarak Session nesnesinin kullanımına verilebilecek en güzel örnek alışveriş siteleridir. Burada kullanıcının sepetine ait olan bilgiler session'da tutulup site içerisinde sayfalar arasında taşınabilmektedir.
Cookie:
Cookie'lerde ise bu şekilde bir oturum sonlanması söz konusu değildir. Çünkü Cookie'ler istek yapılan sunucu bilgisayar tarafından bizim HDD mize bırakılan küçük .txt dosyalarıdır. Bu .txt dosyalarının içerisinde aynen sessionda olduğu gibi sunucunun bizi tanıması için gerekli olan bilgiler saklanmaktadır. Ve sadece bu kodu tanımlayan web sunucusu tarafından okunabilir. Fakat bu Cookie'deki bilgiler yönetici konumuna sahip kişilere ait kullanıcı adı ve parola bilgileride olabilir. Session'da bu bilgiler server bilgisayarda saklandığı için herhangi bir problem oluşturmuyordu. Fakat cookie'de ise bu bilgiler kullanıcıların bilgisayarlarında saklandığı için güvenlik noktasında sıkıntı oluşturmaktadır. Eğer kötü niyetli bir kişi yönetici konumundaki birinin cookie'sini çalıp kendi cookie'si ile değiştirirse çok da hoş bir sonuç çıkmaz ortaya. Bundan dolayı oturum yönetimlerinden session nesnesinin kullanımı daha sağlıklı ve güvenlidir.

Şimdi bu session olayını bir resim üzerinde görelim.

12_11_2010_d1.jpg

Evet resimde ifade etmeye çalıştığım gibi. Client (istemci bilgisayar) Server'dan (sunucu bilgisayar) bir talepde bulunur ve sunucu bilgisayardan kendisine bu talep doğrultusunda bir oturum açılır ve bir SessionID atanır. Oturum süresi boyunca da bu SessionID değerine göre tanınır.

Şimdi bu anllatığımız session olayını bir örnek üzerinde uygulayalım.

Default.aspx
Sayfamızın tasarımı aşağıdaki gibi olacak.
12_11_2010_d2.jpg

Amacımız textboxlara girilen kullanıcı adı ve şifre değerlerini session nesnesi aracılığı ile tutmak.
Burada ne gerçekleşicek?
Session Yaz
Biz textboxlara gerekli değerleri girdiğimiz zaman bu değerleri session'a yazdıracağız.
Session Oku
Az önce yazmış olduğumuz değerleri okutup listbox üzerinde göstereceğiz. Bu okuma işlemi sırasında otomatik olarak atanan sessionID değerinide listbox'da göstereceğiz.
Session Aktar
Burada ise kullanıcının session bilgilerini aynı oturum içerisinde iken bir başka sayfaya taşıyacağız. Bunun içinde projemize bir tane daha Web Form ekliyoruz ve üzerine üç tane label atıyoruz. Bu labellarda atanmış olan SessionID, Kullanıcı Adı ve Şifre bilgilerini göstereceğiz.

Evet şimdi gerekli işlemleri yapmamızı sağlayacak olan kodlarımızı her bir butonun click eventine yazıyoruz. Ve sayfamızın kod kısmının görüntüsü aşağıdaki gibi olacaktır.

Default.aspx.cs

protected void ButtonSessionYaz_Click(object sender, EventArgs e)

    {

        // TextBox lardan gelen değerleri Session'a atıyoruz.

        Session["KullaniciAdi"] = TextBox1.Text;
        Session["Sifre"] = TextBox2.Text;

        // Burada oturumun geçerlilik süresini belirliyoruz. Ben 1 dk olarak belirledim.

        Session.Timeout = 1;

         // Listbox'ı temizleyip. Session'ın yazıldığını belirtiyoruz.

        ListBox1.Items.Clear();
        ListBox1.Items.Add("Session yazıldı.");

   }

     protected void ButtonSessionOku_Click(object sender, EventArgs e)

     {

         // listbox'ı temizliyoruz.

         ListBox1.Items.Clear();

         // Burada ziyaretçiye SessionID atamış oluyoruz ve SessionID değerini listbox üzerinde gösteriyoruz. Bunu Session nesnesinin SessionID özelliği ile yaptık. Bu SessionID atama işlemini sayfanın Page_Laod'ında da yapabilirdik ve ilgili bir nesne üzerinde gösterebilirdik.

         ListBox1.Items.Add("SessionID değeri: " + Session.SessionID.ToString());

        // Burada Sessionlar'a değer ataması yapılmadan okuma yapılmaya çalışıldığında uyarı verdiriyoruz. Eğer Session Yazma işlemi yapıldıktan sonra session okuması yapılıyorsa atanmış olan değerleri listboxda gösteriyoruz.

        if (Session["KullaniciAdi"] == null)
              ListBox1.Items.Add("Session'lar boş. Değer giriniz.");

        else

        {  
            ListBox1.Items.Add("Kullanıcı Adınız: " + Session["KullaniciAdi"].ToString());
            ListBox1.Items.Add("Şifreniz: " + Session["Sifre"].ToString());

        } 

     }

     protected void ButtonSessionAktar_Click(object sender, EventArgs e)

     {

         // Burada ise kulanıcının oturum bilgileri olan SessionID, Kullanıcı Adı ve Şifre bilgilerini başka bir sayfaya taşıyoruz.

        Session["KullaniciAdi"] = TextBox1.Text;
        Session["Sifre"] = TextBox2.Text;
        Response.Redirect("Default2.aspx");

     }


Default2.aspx.cs

protected void Page_Load(object sender, EventArgs e)

    {

        // Burada SessionID, Kullanıcı Adı ve Sifre degerlerinin Default.aspx sayfasında da barındırıldığını görebiliyoruz. Mevcut olan oturum bilgilerini labellara yazdırdık.

        Label1.Text = "SessionID değeri: "+Session.SessionID.ToString();       
        Label2.Text = "Kullanıcı Adınız: "+Session["KullaniciAdi"].ToString();
        Label3.Text = "Şifreniz: "+Session["Sifre"].ToString();

    }

Şimdi projemizi çalıştırıp örneğimizi test edebiliriz. Projemizi çalıştırıp gerekli bilgileri textbox'a girdikten sonra Session Yaz butonuna tıkladığımızda listboxda Session yazıldı mesajının eklendiğini görebiliriz.

12_11_2010_d3.jpg

Şimdi de Session Oku butonuna basarak yazılmış olan Session değerlerinin ve SessionID numarasının listbox'a aktarıldığını görebiliriz. Aşağıda olduğu gibi.

12_11_2010_d4.jpg

Evet SessionID, girilen Kullanıcı Adı ve Şifre bilgilerinin session'dan okunarak listbox'a aktarıldığını görmüş olduk.
Şimdi de bu bilgilerin sayfalar arasında taşınmasına bakalım. Bunun içinde Session Aktar butonuna tıklıyoruz ve ekran görüntümüz aşağıdaki gibi olacaktır.

12_11_2010_d5.jpg

Evet aynı oturum içerisinde iken Session bilgilerinin bir başka sayfa olan Default2.aspx sayfasına aktarıldığını görmüş olduk.
Asp.net ortamında Session işlemleri temel olarak bu şekilde yapılıyor. Birde Session nesnesine ait bazı mode'lar bulunmakta. Bu mode'lar ile Sessionun tam olarak nerede saklanacağını belirtiyoruz. Fazla detayına girmeden kısaca bahsetmek istiyorum.
Öncelikle bu Session'a ait mode ayarlarını web.config dosyamız altında gerçekleştiriyoruz. Ve <sessionState mode=" "></sessionState> elemanını kullanarak yapıyoruz. mode=" " yazan kısma kullanmak istediğimiz mode ifadesini giriyoruz. Bu eleman <system.web></system.web> boğumunun içine yazılarak kullanılır. Aşağıdaki şemada session nesnesine ait mode'lar gösteriliyor.

12_11_2010_d6.jpg

Kısaca bunları açıklayalım.

InProc:
Varsıylan mode InProc dur. Bu mode'da session, Asp.net uygulamalarını çalıştran worker Process'de tutulur. Yani oturum değişkenleri site ile aynı bellek alanlarında bulunur. En hızlı saklama yöntemi bu olmasına karşın bir şekilde Worker Process ya da IIS uygulama havuzu sonlanırsa oturum değişkenleri de kaybolur. Örneğin uygulama havuzu için ayırdığınız bellek miktarı dolar ve uygulama havuzu tekrar başlarsa o anda sayfada bulunan tüm kullanıcıların oturum değişkenleri kaybolur.
StateServer
:
Bu mode'da oturum değişkenleri, iis ve wp den farklı bir uygulamada depolanır. Yani InProc dan farklı olarak, iis veya wp sonlansa dahi oturum değişkenleri kaybolmaz. Ancak sessiona attığınız objelerin serialise edilebilmesi kuralı InProc mode'una göre daha katıdır.
SQLServer:
Bu mode'da oturum değişkenleri bir Sql sunucusunda bulunur. Bu mode InProc kipine göre yavaş ama güvenirliği açısından etkili bir yöntemdir.
Custom: Yukarıda belirtilen kipler dışında oturum değişkenleri özel bir sağlayıcıda barındırılacaksa bu yöntem kullanılmalıdır.

Evet arkadaşlar bu yazımda Asp.net ile Session işlemlerinin nasıl yapıldığına ve Session nesnesine ait olan mode'lara değindik. Faydalı olacağını umuyorum..
Hepinize Kolay Gelsin. İyi Çalışmalar.

SessionUygulama.rar

kategoriler:  AspNet |

Bu yazımda Visual Studio 2008 ile Report Wizard nesnesini kullanarak web ortamında raporlama yapımını anlatacağım. Anlatım genel olarak resimler üzerinden olacak. Bu örneğimiz için MS Sql veri tabanını daha önceden hazırlamış olmanız gerekiyor. Çünkü raporlamanın mantığı veri tabanında sakladığımız bilgileri raporlar haline getirerek okunaklı ve düzenli bir şekilde sunmaktır. Visual Studio ortamında MS Sql veritabanı oluşturulmasına buradan bakabilirsiniz.

Neler gerekli;

Visual Studio 2008

Önceden hazırlanmış .mdf dosyası
Report Wizard Nesnesi

İlk Önce;

Yeni bir web Projesi oluşturuyoruz.

Sonrasında daha önceden hazırlamış olduğumuz veri tabanını App_Data klasörümüze ekliyoruz.

Başlıyoruz:
Asp.net ortamında raporlama işlemini gerçekleştirebilmemiz için Report Wizard nesnesini projemize dahil etmemiz gerekiyor. Projemizde sağ tuş tıklayıp Add New Item dan Report Wizard nesnesini ekliyoruz.

12_11_2010_c1.jpg


İlk defa ekleme yaptığımızda aşağıdaki pencere gelecektir. Next diyoruz. Bu pencerenin tekrar gelmesini istemiyorsanız Don't show this page again kısmını seçili yapın.

12_11_2010_c2.jpg


Next dedikten sonra wizard bize raporlamasını yapacağımız veritabanını seçmemizi söylüyor. Biz Database.mdf dosyamızı projemize daha önceden eklemiştik bundan dolayı veri tabanımız seçili olarak geldi ve next dedik.

12_11_2010_c3.jpg


Bundan sonra karşımıza gelen pencere bu uygulama dosyası için gerekli bağlantı stringini kaydetmek isteyip istemediğimizi soruyor. Bu şekilde next diyoruz.

12_11_2010_c4.jpg


Gelen pencerede görüntülemek istediğimiz veritabanı nesnelerini seçiyoruz.

12_11_2010_c5.jpg


Gelen pencerede personel tablomuza ait kolonları görüyoruz. Bundan sonraki aşamalar raporlama tasarım ayarlarımız ile ilgili düzenlemeleri içeriyor.

12_11_2010_c6.jpg


Bu pencere ise raporlama tasarımının tablo şeklindemi yoksa matris yapısındamı olacağını soruyor. Biz tablo görünümünü seçip next diyoruz.

12_11_2010_c7.jpg


Burada tüm detayları görüntülemek istediğimiz için bu şekilde aktarıyoruz.

12_11_2010_c8.jpg

Gelen pencereden blok halinde değilde basamaklı gösterimi seçiyoruz. Yanlardaki önizleme görünümü, seçimlerimizin nasıl bir düzende olacağı hakkında fikir sahibi olmamızı sağlıyor.

12_11_2010_c9.jpg


Buradaki pencerede farklı seçeneklerde stiller var. Ben Slate yi seçtim ve next dedik.

12_11_2010_c10.jpg


Next dedikten sonra rapor için seçtiğimiz bilgiler doğrultusunda bir özet sayfası geliyor. Finish diyoruz.

12_11_2010_c11.jpg


Finish dedikten sonra Report.rdlc sayfamız aşağıdaki gibi olacaktır.

12_11_2010_c12.jpg


Oluşturduğumuz raporu web sayfasında görüntüeyebilmek için Toolbox penceresinden Reporting altında bulunan MicrosoftReportViewer nesnesini Default.aspx sayfamıza sürükleyip bırakıyoruz.

12_11_2010_c13.jpg


Default.aspx sayfası aşağıdaki gibi gözükecek. Burada ReportViiewer Tasks altında Choose Report seçeneğinden Report.rdlc nesnesini seçiyoruz. seçme işleminden sonra ObjectDataSource'un geldiğini görüyoruz.

12_11_2010_c14.jpg


Projemizi çalıştırdığımızda ekran görüntüsü aşağıdaki gibi olmaktadır. Burada printer ikonuna tıkladığımızda bilgilerin çıktısını yazıcıdan alabiliriz. Bunun haricinde Export butonu bölümünden bilgilerimizi exel veya pdf formatında kayıt edebiliriz.

12_11_2010_c15.jpg


Görüldüğü gibi basit bir şekilde daha önceden oluşturduğumuz veri tabanındaki bilgileri rapor halinde düzgün bir şekilde gösterebildik. Tabiki raporlama bu kadar basit işlemlerle sınırlı değil. Konunun bütünlüğünü bozmamak adına detaylara girmedim sadece raporlamanın nasıl yapıldığını anlatmaya çalıştım. Belki bu konunun devamı niteliğinde ikinci bir dökümanda detaylarını ele alabilirim.

Hepinize kolay gelsin görüşmek üzere.

kategoriler:  AspNet |

Access yaklaşık olarak 1 GB'lık verilerden sonra pek sağlıklı çalışmamaktadır. Bu durumda veritabanımızın boyutu arttıkça ihtiyaçlarımıza en iyi MS Sql Server cevap vermektedir. Sql server'ın ücretsiz olan Express sürümü 4 GB veri almaktadır. Ücretli olan sürümlerinde böyle bir sınırlama yoktur.

Sql Server Express 2008
;

Sql Server Enterprise 2008;    bu linklerden express ya da deneme sürümlerini indirebilirsiniz.

Evet bu kısa bilgiden sonra asıl konu başlığımıza gelelim. Asp.net ile gerçekleştireceğimiz veritabanı bağlantısında Sql Server Express 2008 sürümünü kullanacağız. Veri tabanımızı Management Studio ile oluşturabileceğimiz gibi Visual Studio ortamındada oluşturabiliriz. İkisi arasında hiç bir fark yoktur. Management Studio ile gerçekleştirebileceğimiz sorgulama işlemlerini Visual Studio ortamında da yapabiliriz. Bu tamamen sizin tercihinize kalmış bi durum. İlerleyen günlerde Management Studio'nun kullanımı ile ilgili bir yazıda yazabilirim.


Başlıyoruz;


File - New Web Site diğerek Asp.netSqlServer isminde bir proje oluşturuyoruz. Sonrasında solution penceresinden App_Data klasörümüzün üzerinde sağ tıklayıp Add New Item diyoruz.

12_11_2010_b1.jpg


Açılan pencereden calisanlar.mdf isminde bir veri tabanı oluşturuyoruz.

12_11_2010_b2.jpg


Server Explorer penceresinde az önce oluşturduğumuz veri tabanının geldiğini görüyoruz. (eğer sizde server explorer gözükmüyorsa Ctrl+Alt+S ile aktif hale getirebilirsiniz) Burdan Tables üzerinde sağ tıklayarak Add New Table seçiyoruz.

12_11_2010_b3.jpg


Aşağıdaki gibi veritabanımızın tablolarını oluşturuyoruz.


12_11_2010_b4.jpg

Metinsel verileri varchar(50) olarak belirliyoruz. Bu max. 50 karakter girileceği anlamına geliyor. ID ve yaş tam sayı olduklarından bunlarıda int tipinden belirledik.

Sonrasında aşağıdaki gibi ID kolonuna birincil anahtar atıyoruz.


12_11_2010_b5.jpg


Bu şekilde birincil anahtar koymamızın sebebi her bir kullanıcıya ait olan bir sıra numarası vermektir. Mesela aynı isime sahip olan kişileri çağrdığımız zaman karışıklık olmaması için bu numaraları kullanacağız. Aşağıdaki gibi Is Idendity'yi Yes yapıyoruz ve increment ve seed değerlerinin otomatik olarak 1 olduğunu görüyoruz. Bu şekilde yaptığımızda veri eklendikçe kayıtların bir numaradan başlayarak birer birer artmasını sağlayacaktır. Bu isteğe göre değiştirilebilir.

12_11_2010_b6.jpg


Sonrasında Ctrl+S diyerek tblcalisanlar ismini verip tablomuzu kayıt ediyoruz.

12_11_2010_b7.jpg


Şimdi oluşturmuş olduğumuz tablolara manuel olarak veri girişi yapıcaz. Bunun için tablomuz üzerinden sağ tıklayarak Show Table Data diyoruz.

12_11_2010_b8.jpg


Ben veritabanı tablosunu aşağıdaki gibi oluşturdum. Fazla kayıt girmemin sebebi verileri gösterdiğimiz gridview'in bir özelliğini uygulamamız içinde kullanacak olmamız.

12_11_2010_b9.jpg


Evet veritabanımızı hazırladık. Şimdi sıra bu verileri sayfamzıda göstermeye geldi. Bunun için Default.aspx sayfamızın design kısmına gelerek bir adet gridview ekliyoruz. Ve gridview'in Choose Data Source kısmından New Data Source'u tıklıyoruz.

12_11_2010_b10.jpg


Çıkan pencereden Database'i seçip okey diyoruz.

12_11_2010_b11.jpg

Sonrasında calisanlar.mdf database'imizi seçiyoruz. Seçim sonrasında bağlantı stringimiz oluşuyor ve Next diyoruz.

12_11_2010_b12.jpg


Next dedikten sonra çıkan pencerede bağlantımızın adı default olarak ConectionString geliyor biz bunu istersek değiştirebiliriz ben bu haliyle bırakıp Next diyorum.

12_11_2010_b13.jpg

Next dedikten sonra veritabanımızda oluşturduğumuz tablodaki kolon isimlerini görüyoruz. Ben hepsini kullanacağımız için " * " seçeneğini tıklıyorum ve bütün kolonları seçmiş oluyoruz.

12_11_2010_b14.jpg


Next dedikten sonra çıkan pencerede Test Query'i tıklayarak veri tabanımızın bağlantısını kontrol ediyoruz ve bağlantı işleminin sağlıklı bir şekilde gerçekleştiğini görüyoruz.

12_11_2010_b15.jpg

Finish diyerek bağlantı işlemini bitiriyoruz. Şimdi uygulamamızın biraz daha kullanışlı olması için Default.aspx sayfamıza bir tanede textbox ekliyoruz. Bağlantı işlemini gerçekleştirdikten sonra gridview'in tasks kısmında Enable Paging, Enable Sorting, Enable Selection seçeneklerinin geldiğini görüyoruz bunların hepsine tik işareti koyup gridview'in properties özelliklerinden PageSize değerinide 5 yapıyoruz. Yazının başında anlattığım fazla veri girşi yapmamızın sebebini burda göstermiş olucaz.

Enable Paging: gridview'deki verileri sayfalamamıza yarıyor.

Enable Sorting: kolon isimlerine göre sıralama özelliğini aktif hale getiriyor.
Enable Selection: herbir satırdaki kayıtları seçmemize yarıyor.
PageSize ise default olarak 10 gelir biz bunu 5 yaparak verilerin sayfada 5 satırda gözükmesini sağlıyoruz.

12_11_2010_b16.jpg


Uygulamamızda şunu yapıcaz. Gridview'den seçtiğimiz kayıt'ın ismini textbox'da göstericez. Bunun için Gridview üzerinde sağ tuş yapıp properties dedikten sonra event'lerine geliyoruz.

12_11_2010_b17.jpg


Burda SelectedIndexChanged event'ini çift tıklıyoruz ve sayfamızın Default.aspx.cs isimli kod sayfasına geçiyoruz.

12_11_2010_b18.jpg


Burada kayıtları id numarasına göre seçiyoruz ve Cells ile hangi hücre isminin yazılacağını belirliyoruz. Eğer Cells içerisine 3 koysaydık textboxda seçilen kayıdın  soyadını görücektik. Evet projemizi derlediğimiz zaman sonuç aşağıdaki gibi olacaktır.

12_11_2010_b19.jpg


Gördüğünüz gibi 1. id değerine sahip kayıdı seçtiğimizde o kayıdın ismini textbox'a yazdırmış olduk. Burada ID, Ad, Soyad... gibi kolon başlıklarına tıkladığımız zaman da kolonların kendi içinde sıralama yapacaktır. 1 ve 2 gridviewdeki diğer verilere ulaşmamızı sağlayan sıralama numaralarıdır. 2'ye tıkladığımızda eklemiş olduğumuz diğer dört veriyi sayfamızda gösterecektir. Evet arkadaşlar Bu yazımda sizlere asp.net ile sql server veritabanına bağlanmayı anlattım. Tabiki bağlantı işlemini sadece bu şekilde yapmıyoruz. Eğer istersek bağlantı için gerekli olan kodlarımızı kendimizde yazarak bu işlemi gerçekleştirebilirz. Bununla ilgili yazmış olduğum  Asp.net ile Access Bağlantısı yazıma bakabilirsiniz. Yapılacak işlemler access'de olduğu gibi aynı. Fakat Sql Server'da bağlantı stringini belirtirken değişiklik yapmanız gerekiyor.


kategoriler:  AspNet | MSSQL |