You are on page 1of 118

1

ASP.NET NEDR?
.NET FRAMEWORK NEDR?
.Net Framework .Net platformunun bir dayanak noktasdr. .Net Framework gcn ierisinde barndrd yzlerce snf (class) ktphanesinden alr. Bize sunucu tarafnda alan bir yap kurabilmemizi salar, olaya dayal programlama modeli sayesinde daha hzl ve verimli uygulamalar gelitirebilmemizi ve bunlar istediimiz programlama diliyle yazabilmemizi salar. .Netin destek verdii diller C# Microsoft Visual J# .NET Oberon Scheme Pyhton Cobol Pascal ML Eiffel Ada Caml Microsoft Visual C++ C Oz

Visual Basic .Net Microsoft Jscript .Net Perl Haskell Mercury SmallTalk APL

oklu dil desteinin avantajlar Kod modlleri yeniden kullanlabilir. Bir kod modl, bir dil iinde yazlp farkl diller iinde kullanlabilir. Tm diller iin object ktphanesi ayndr ve ayn object modeli kullanlr. Eski dillerde yazlm programlar gncellenebilir. .NET Framework iindeki tm diller eit performansa sahiptir. Btn .NET tabanl diller Microsoft Intermediate Language (MSIL)a derlenir. Tm MSIL ler native koda derlenir. Bu runtimedr ve hepsi ayn derleyici kullanr.

ASP.NET WEB UYGULAMALARI


Bir web projesi amak iin VS.NET 2005i atkdan sonra st menden File > New > Web Site seeneinin setikden sonra karmza web site ama penceresi gelecektir. Alan pencerede Templates ksmndan ASP.NET Web Site seeneini sein. Language seeneinin C# olmasna dikkat edin. Location ksmndan File Systemi oradanda nereye kaydedecekseniz konumu belirtiniz ve OK dmesine basnz. (ekil 1.1)

ekil 1.1 Artk ASP.Net sayfamz alm olacaktr. Hibirey yazmadan klavyeden F5 tuuna basnz. Karmza bir soru gelirse OK dememiz yeterli.

Visual Web Developer Web Server Nedir?


Biraz nceki uygulamamzda F5 e bastkdan sonra taskbarmzn stnde bir baloncuk kt (ekil 1.2) . Bu ifade web uygulamalarn gelitirmek iin kullanlan local Web Server olup, IIS yapsnn extra zelliklerini iermez. nceleri IIS de ayarlama sorunlar yaadmz olmutur. .NET 2005 platformu kendi IIS ini altrdndan IIS bazndaki sorunlar ortadan kalkmtr.

ekil 1.2 Evet artk ASP.Net uygulamalarmz gelitirebiliriz. Bunu iin atnz projenin almas durduundan emin olun. alma durumunu durdurmak iin alan internet explorer penceresini kapatmak yeterli olacaktr.

ASP.NET NESNELER
Sayfamza Toolbox penceresinden Design ksmnda iken sayfamza bir label ve buton ekleyelim. (ekil 1.3). Ekledikten sonra butonumuzun stn ift tklayalm.

ekil 1.3 Butonumuzu ift tkladktan sonra Button1_Click olayna kodumuzu yazalm.
protected void Button1_Click(object sender, EventArgs e) { Label1.Text="Visual Studio .NET 2005 Eitim"; }

Kodumuz yazp F5(altr)e batktan sonra karmza gelen web sayfasndan butonu tklayalm. (ekil 1.4)

ekil 1.4 Bylece ASP.Net uygulamalarmzda ilk rneimizi yapm olduk. (Tabii ki ASP.Net bu kadar basit deil )...

Server Kontrol Nedir?


Kullanc arabirimi veya dier ilikisel fonksiyonlar oluturmak zere Server zerinde alan componentlere denir. Server kontroller runat= server zelliine sahiptirler. (ekil 2.1)

ekil 2.1

Standart Kontroller
Bu blmde ASP.Net platformumuzu atmzda Toolbox penceresindeki Standart blmndeki kontrollerden bahsedeceiz.(ekil 2.2)

ekil 2.2 LABEL Web sayfasnda kiilere mesaj iletmek iin kullanlr.(ekil 2.3) Properties penceresinden baz zelliklerinin aklamas ise;

zellik Ad BackColor BorderColor BorderStyle BorderWidth CssClass Font ForeColor Visible Width

Tanm Taban Rengi ereve Rengi ereve Tipi ereve Kalnl Sitil Atama Yaz karakteri ayarlar Yaz Rengi False olursa ekranda grnmez Genilik Deeri

ekil 2.3

Baz zellikler dier kontroller iinde aynen geerlidir. Bu yzden benzer zellikleri olan kontrollerde tekrardan yazmayacam.

TEXTBOX Kullanclarn bilgi girii iin kullanlan kontroldr.(ekil 2.4) zellikle yelik kayt, ifre dorulamalarda yaygn olarak kullanlr.

ekil 2.4 zellik Ad Text TextMode MaxLenght TextMode Wrap Enable Tanm erisine Deer Atama Bir / Birden ok Satr Ayar Maksimum Girilecek Karakter Says Single(Tek Satr), Multiple (ok Satr), Password (ifreli yaz) False Olduunda Alt Taraf Kaydrma ubuu False Olduunda Bilgi Girii Yaplamaz

BUTTON Tm windows uygulamalarnda Tamam, Uygula, ptal vb. olarak grdmz basma (click) zelliine sahip kontroldr. (ekil 2.5)

ekil 2.5 Tabiki konumuz ASP.Net olduu iin bu butonu biz web sayfalarmzda bir ilemi onaylatmak, form gndermek, kayt eklemek, giri yapmak gibi ilemlerde kullanacaz. (ekil 2.6)

ekil 2.6 Butonumuzu eklemek iin Toolboxdaki Button ismi projeye srklememiz yeterli (ekil 2.7)

ekil 2.7 zellik Ad Text Enabled Tanm Butonun stndeki Yazy Deitirir False Olduunda Buton Pasif Olur.

10

Kontrollerin tm zellikleri kod ortamnda yazarakta ynetebilirsiniz. rn: TextBox1.Enabled=True; UYGULAMA 1 1) File>New>Web Site seeneini seerek yeni bir web sitesi oluturalm 2) Web sitemize birer adet button, textbox ve label yerletirelim. (ekil 2.8)

ekil 2.8 3) Butonumuzun stn ift tklayarak Button1_Click zelliine aadaki kodu yazalm.
protected void Button1_Click(object sender, EventArgs e) { this.Label1.Text = this.TextBox1.Text + " Hogeldin"; } //Label1 in yazn textbox a yazlan yazy yaz.

4) Kodumuzu yazdkdan sonra altralm. Textboxa bir isim yazdktan sonra butonu tklayalm. (ekil 2.9)

ekil 2.9 LINK BUTTON Bir ok zellii butona benzeyen Link buttonu link vermek iin kullanr. Click zelliine kodumuzu yazarak ynlendirme yapabiliriz.

IMAGE BUTTON LinkButton ile ilevi ayndr. Tek fark Link yazsnn yerine resim gelir. Resim getirmek iin Properties penceresinden ImageURL seeneinden resmi belirleyebilirsiniz. (ekil 2.10)

11

ekil 2.10 Image Buttona resim ekledikten sonra bir sayfaya ynlendirmek iin ImageButtonu ift tklaynz. Click zelliine aadaki kodu yaznz.
protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { Response.Redirect("http:\\\\www.netsoft.com.tr"); }

Kodumuzu yazp altrdan sonra resmi tkladmzda web sayfas alacaktr. DROPDOWNLIST Alan liste eklinde seim yapmak. Birden fazla seenein sadece bir tanesinin seilmesi durumunda kullanlr. rnein; Web sitelerin ehir seimleri gibi...

1) Yeni bir Web Sayfas aalm. 2) Toolboxdan DropDownList ekleyelim. 3) DropDownListi setikden sonra Properties penceresinden Items seeneini tklaynz. Karmza ListItems Collection Editor alacaktr. (ekil 2.11)

ekil 2.11

12

4) Add butonuna basarak DropDownList iin elemanlar ekleyelim. Add dedikten sonra Text ve Value degerlerini dolduralm.

ekil 2.12 5) Text zelliine yazdmz deerler DropDownList de ekranda gorunecektir.(ekil 2.13

ekil 2.13 UYGULAMA 2 1) 2) 3) 4) Yeni bir Web sayfas aalm. Web sayfamza TextBox ve DropDownList koyalm. (ekil 2.14) DropDownListe deerlerimizi ekleyelim. Daha sonra DropDownListi ift tklayarak codebehind alanna geiniz. DropDownListin SelectedIndexChanged olayna aadaki kodumuzu yazalm.

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { this.TextBox1.Text = this.DropDownList1.SelectedItem.ToString(); }

Yukardaki kodu altrdmzda olmas gereken durum DropDownList seeneklerinden birini setiimizde o deerin TextBox da grnmesi salanacaktr.

ekil 2.14

13

Kodu altrdmzda, DropDownListden sememize ramen TextBoxa deer aktarlmayacaktr. ASP.Net sayfalarnda bu zelliin alglanmas iin, DropDownList1in properties penceresinde bulunan AutoPostBack zelliinin True olmas gerekmektedir. LISTBOX Tm zellikleri DropDownList ile aynsdr. Tek fark karmza direk olarak liste eklinde gelmesidir. Kodlama olarakda DropDownList de geerli olan tm kodlar ListBox iinde geerlidir.

UYGULAMA 1 1) Yeni bir Web sayfas aalm. Web sayfamza TextBox ve ListBox koyalm. (ekil 2.15)

ekil 2.15 2) ListBoxmza Properties penceresinden Items seeneini kullanarak deerlerimizi ekleyelim. (ekil 2.16)

ekil 2.16 3) Deerlerimizi girdikten sonra ListBoxmz ift tklayarak kod alanmza geelim. Aadaki kodumuzu yazarak altralm (ekil 2.17). Tabi bu arada Listboxmz seerek AutoPostBack seeneini True yapmayda unutmayn.
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { int deger = Convert.ToInt32(this.ListBox1.SelectedItem.Value); this.TextBox1.Text = string.Format("{0:N} YTL", deger); }

Buradaki string.Format("{0:N} YTL",deger) ksm gdnerdiimiz deeri ayra olarak ayarlayacaktr.

14

ekil 2.17 CHECKBOX Genel kullanm bir formda birden fazla seim yapmak iin kullanlr (ekil 2.18). Aadaki rneimizde setiimiz dersleri bir textboxa ekleyelim.

ekil 2.18 CheckBox nesnemizin ait zellikler aadaki listede yer almaktadr. zellik Ad Checked Text Enabled BorderWidth UYGULAMA 1 1. Web Sayfamza 4 CheckBox ve bir adet DropDownList ekleyelim(ekil 2.19). CheckBox larmzn properties penceresinden Text zelliini kullanarak deerleriniz deitirelim. Tanm aretli Olup Olmamas Ekranda Grnecek Yazs Aktif Olup Olmamas ereve Kalnl

ekil 2.19 2. DropDownListe items zelliinden isim girelim (rn: Funda,Seluk,Ahmet) ve AutoPostBack zelliini True yapalm. 3. Daha sonra DropDownListi ift tklayarak kod alanna geelim. Aadaki kodu ekleyelim.

15
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e) { if (this.DropDownList2.SelectedIndex == 0) { this.CheckBox1.Checked = true; this.CheckBox2.Checked = false; this.CheckBox3.Checked = false; this.CheckBox4.Checked = true; } else if (this.DropDownList2.SelectedIndex == 1) { this.CheckBox1.Checked = false; this.CheckBox2.Checked = true; this.CheckBox3.Checked = true; this.CheckBox4.Checked = false; } else { this.CheckBox1.Checked = true; this.CheckBox2.Checked = true; this.CheckBox3.Checked = true; this.CheckBox4.Checked = true; }

Kodu altrdmzda DropDownListden bir isim seelim. Setiimiz ismin index numarasna gre CheckBoxlar iaretlenecektir (ekil 2.20).

ekil 2.20

RADIOBUTTON CheckBoxa benzer, tek farkllk bir grup ismi verilen radiobuttonlardan sadece bir tanesini seme durumumuz olacaktr (ekil 2.21).

ekil 2.21 UYGULAMA 1 1) lk rneimizde am olduumuz web sayfasna 2 RadioButton, birer adette TextBox ve Button Ekleyelim. RadioButtonlarn text zelliinden Erkek Kadn olarak deitirelim. (ekil 2.22).

16

ekil 2.22 2) RadioButtonlarmz tklayarak Properties penceresinden GroupName ksmlarna cinsiyet yazalm. Bylece bu gruba adnda iki uye olacandan sadece bir tanesi iaretlenecektir. 3) Butonumuzu ift tklayarak aadaki kodumuzu yazalm.
protected void Button1_Click(object sender, EventArgs e) { string yazi = this.TextBox1.Text; if (this.RadioButton1.Checked == true) { Response.Write(yazi + " Cinsiyeti: Erkek"); } else { Response.Write(yazi + " Cinsiyeti: Kadn"); } }

Burada Response.Write komutumuz ekrana yazmak iin kullanlr. RadioButton1 eer iaretlendi ise TextBoxdaki ismi alarak cinsiyetini ekrana yazacaktr (ekil 2.23).

ekil 2.23

CHECKBOXLIST CheckBoxa benzer bir yapya sahiptir. Listbox ile CheckBox n birlemeside denilebilir (ekil 2.24).

ekil 2.24 CheckBoxliste ait zellikler aadaki listede yer almtr.

17

zellik Ad Items RepeatDirection TextAlign UYGULAMA 1

Tanm CheckBox Ekleme Penceresi Yatay/Dikey Konumlandrma Yaz Hizalama / Konumlandrma

1) Web sayfamza CheckBoxlist ekleyerek Items zelliinden srasyla, Funda,Seluk,Kadir isimlerini ekleyelim. 2) Kodumuzu altrmak iinde bir Button ekleyelim (ekil 2.25). Butonumuzu ift tklayarak kod alanna geelim.

ekil 2.25 3) Aadaki kodu ekleyerek altralm. CheckBoxlistten isimleri setikden sonra butona bastmzda setiimiz isimleri ekranda grebiliriz (ekil 2.26).

ekil 2.26 RADIOBUTTONLIST RadioButton ile ListBoxn birlemi hali diyebiliriz (ekil 2.27). Items zelliinden seenek ekleyebiliriz. Bu RadioButtonList listesinden sadece bir tane seebiliriz.

ekil 2.27 UYGULAMA 1 1) Web sayfamza RadioButtonList ekleyerek Items zelliinden srasyla, Dilek, Elif, Belgin isimlerini yaznz. 2) Daha sonra bir buton ekleyerek butonumuzun ift tklayarak kod alanna geiniz (ekil 2.28).

18

ekil 2.28 3) Kod alanna getikden sonra aadaki kodu yaztkdan sonra altrnz. Radio buttonlarndan birini setikden sonra butona basnz (ekil 2.29) .
protected void Button1_Click(object sender, EventArgs e) { if (this.RadioButtonList1.SelectedIndex == 0) { Response.Write(this.RadioButtonList1.SelectedValue + " Lisans Sat"); } else if (this.RadioButtonList1.SelectedIndex == 1) { Response.Write(this.RadioButtonList1.SelectedValue + " Sat Mdr"); } else { Response.Write(this.RadioButtonList1.SelectedValue + " Muhasebe"); } }

ekil 2.29 Bylece ListBoxdaki gibi index numarasndan setiimiz RadioButton alglanarak, ekrana bilgiler yazlmtr. CALENDAR Ekrana bir takvim getirerek tarih bilgilerini almamz salar. Ayrca kullanclarn tarih formatlarnda hata yapmalarn engellemek amal kullanlr (ekil 2.30).

ekil 2.30 Calendar nesnemizin zellikleri aadaki listede yer almaktadr.

19

zellik Ad SelectedDate SelectedDateSytle Caption

Tanm Belirlediiniz Gn Seili Gelir Seilen Gn Renk / Biim Ayarlar Takvimin Balk Yazs

Calendar nesnemizin stnden mouse ile sa tua bastnzda gelen menden Auto Format seeneini seiniz (ekil 2.31). Karmza gelen pencereden bize sunulmu olan biimlerden birini seerek OK dmesine basnz.

ekil 2.31 UYGULAMA 1 1) Calendar nesnemizde setiimiz bir tarihi TextBox nesnemize aktarmak iin, web sayfamza birer adet Calendar ve TextBox nesnelerimizi ekleyelim. 2) Daha sonra Calendar nesnemizi ift tklayarak kod alanna geelim ve kodumuzu yazalm.
protected void Calendar1_SelectionChanged(object sender, EventArgs e) { this.TextBox5.Text = this.Calendar1.SelectedDate.ToShortDateString(); }

Kodumuz yazp altrdktan sonra Calendar nesnemizden setiimiz tarihi TextBoxa aktaracaktr (ekil 2.32).

20

ekil 2.32 UYGULAMA 2 1) Bu uygulamamzda ise aramba gnlerinde toplantlarmz var ve bunu takvimimize ekleyelim. 2) Bunu iin Calendar nesnemizin Calendar1_DayRender eventna aadaki kodu yazalm.
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) { if (e.Day.Date.DayOfWeek == DayOfWeek.Wednesday) { e.Cell.Controls.Add(new LiteralControl("Toplanti")); } }

Kodu yazp altrdmzda aramba gnlerinde Toplanti yazsnn eklendiini grebiliriz (ekil 2.33).

ekil 2.33 MULTIVIEW VIEW Kullanm tab menuye benzeyen, olduka kullanl olan Multiview ve View nesneleri beeneceinizi dnyorum (Resim 2.34).

Resim 2.34

21

Multiview bilmemiz gerek bir ActiveViewIndex zellii, hangi View nesnesinin grnmesini istiyorsak onun index deeriniz yazmamz gerekmektedir. Index numaralar 0 dan balamaktadr. Eer 1 deerini belirlersek ekranda hibir View grnmeyecektir. UYGULAMA 1 1) Bir web sayfas aalm ve bir tane Multiview ekleyeyelim. 2) Daha sonra Multiviewin ierisine 3 adet alt alta View ekleyelim (ekil 2.35).

ekil 2.35 3) Daha sonra MultiViewin stne 3 adet Link Button ekleyerek deerlerini deitirelim (ekil 2.36).

ekil 2.36 4) View1, View2 ve View3 n ierisine istediiniz nesneleri ekleyebilir veya yazabilirsiniz (ekil 2.37).

ekil 2.37

22

5) Daha sonra LinkButtonlarmza kodlarmz yazarak altralm. Bylece hangi linki tklarsak ona ait View grnecektir (ekil 2.38).
protected void LinkButton1_Click(object sender, EventArgs e) { this.MultiView1.ActiveViewIndex = 0; } protected void LinkButton2_Click(object sender, EventArgs e) { this.MultiView1.ActiveViewIndex = 1; } protected void LinkButton3_Click(object sender, EventArgs e) { this.MultiView1.ActiveViewIndex = 2; }

ekil 2.38 WIZARD Web sayfalarnda kayt olurken; kullancya sorulan sorular farkl formlar da gsteririz. Bunu yapmak iin ya her formu bir sayfaya atarz, yada paneller kullanarak visible zelliklerini truefalse yaparak paneli ayarlardk. Bunun yerine Asp.Net 2.0 da Wizard kontrol (ekil 2.39) bu adan olduka iimize yarakacaktr. Wizard 4 blmden oluur. Wizard admlar (Wizard Steps), Hareket dmeleri (Navigation buttons), sidebar ve balk (header) ksmlardan oluur.

ekil 2.39 UYGULAMA 1 1) Web sayfamza Wizard kontrol ekleyelim.(ekil 2.40)

ekil 2.40 2) Karmza gelen pencereden Add/Remove WizardSteps seeneini seiniz. Karmza bir pencere gelecektir (ekil 2.41). Bilgileri ekildeki gibi deitirip OK butonuna basnz.

23

ekil 2.41 3) Daha sonra wizard n Kiisel Bilgileri yazsn tklayarak. ekil 2.42 gibi bir grnt oluturunuz.

ekil 2.42 4) Daha sonraki admlarda tek tek yazlarn tklayarak gerekli biimlendirmeyi yapnz.(ekil 2.43)

ekil 2.43 Daha sonra FINISH butonumuzun stn ift tklayarak codebehind alanna geelim. Aadaki kodumuzu yazalm.
protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e) { Response.Write(this.TextBox1.Text); Response.Write(this.TextBox2.Text); Response.Write(this.TextBox3.Text); //Kiisel bilgiler ve irket bilgilerindek textbox lar iin kodu yazdm }

5) Kodumuzu altrdktan sonra textboxlarmza deer girerek sonucu grebiliriz. (ekil. 2.44)

24

ekil 2.44 Bylelikle bir ka ilemimizi tek bir alanda yaparak ilemlerimizi daha hzl gerekletirebiliriz. Finish butonunu veritaban ilemine balayarak Wizard kontrol iinize yarayacaktr.

25

26 VALIDATION KONTROLLER Web sayfalarnda en nemli bir konu halini alan bilgi girii ve bunlarn kontrollerini yapan kontrollerdir (ekil 3.1).

ekil 3.1 Kullanclarn hatasz ve eksiksiz olarak formlarn doldurulmasnda nemli rol oynamaktadr. Bu kontroller Javascript veya DHTML kullanlarak da yaplabiliyordu. Fakat Asp.NET 2.0 bize sunmu olduu bu validation sayesinde daha anlalr ve hzl olmamz salamaktadr. Bu kontrollerin almas iin Internet Explorer 4 ve st olmas gerekmektedir. Bu kontrolleri genel olarak tanmlayalm. Validation Kontrol Ad Required Field Validator Aklama Kontrol ierisine bir deer girilip girilmediini kontrol eder. Atam olduumuz kontrol bo geemez. Belirlediimiz iki deer arasnda kontrol eder. rnein ya aral iin kullanlabilir. Karakter kontrolleri yapar. Mail adresinde @ iareti gib kontrollerde kullanlr. ki giri kontrol arasndaki deeri, tipini veya dosyan eitliini kontrol eder. Validation iin kendi kodumuzu yazmaya izin verir.

Range Validator Reguler Expression Validator Compare Validator Custom Validator

Validationlar daha iyi anlamak iin uygulamalar yapalm. UYGULAMA 1 1) lk uygulamamzda RequiredFieldValidator kontroln kullacaz. Bunun iin web sayfamza birer adet textbox, button ve RequiredFieldValidator kontrollerini ekleyelim (ekil 3.2)

ekil 3.2

27 2) RequiredFieldValidator kontroln tklayalm ve properties penceresinden ErrorMessage zelliini kullanarak hata mesajn Bu alan bo geemezsiniz olarak deitirelim. Bylece kullanc hata yaptnda bu ileti kacaktr. 3) Daha sonra ControlToValidate zelliinden TextBox1 i seiniz ve kodumuzu altrnz. Eer TextBox bo geerek butona basarsanz hata kacaktr (ekil 3.3). Fakat TextBoxmza bireyler yazp butona bastmzda hata mesaj kaybolacaktr.

ekil 3.3 UYGULAMA 2 1) Bu uygulamamzda ise RangeValidator kontrolmz anlatacam iin. Web sayfamzda birer adet textbox, button ve RangeValidator kontrol yerletirelim. 2) RangeValidator kontrol tklayarak properties penceresinden ErrorMessage ksmna 0 ile 100 aras bir say giriniz mesajn yaznz. 3) Daha sonra yine RangeValidator kontrolnn MinimumValue zelliine 0, MaksimumValue zelliine ise 100 deerlerini yaznz (ekil 3.4).

ekil 3.4 4) Deerleri girdikten sonra CompareToValidate seeneinden Textbox objenizi seiniz. Setikden sonra kodumuzu altralm ve textbox a 200 gibi byk bir rakam girelim. RangeValidation hata verecektir (ekil 3.5). Eer siz aralk olarak iki tarih aral belirlemek istiyorsanz Range Validationnn Type zelliini Date yapmanz gerekmektedir.

ekil 3.5

28 UYGULAMA 3 1) Bu uygulamamzda ise RegularExpressionValidator kontroln anlatacam. Bunu iin Web sayfamza birer adet textbox ve buton nesneleri yerletiriniz. Textbox nesnemizin yannada RegularExpressionValidator kontolunden koyalm. 2) RegularExpressionValidator kontrolne ait properties penceresinden ErrorMessage ksmna Yanl EMail yazsn, ContolToValidate seeneinden de textbox1i seiniz. 3) Properties penceresinde bulunan ValidationExpression seeneinin tkladnzda karmza Regular Expression Editor penceresi gelecektir. Gelen seeneklerden telefon numaras, email, web adresi,posta kodu gibi hazr kalplar iermektedir. Biz be seeneklerden Internet email address seeneini seiniz (ekil 3.6).

ekil 3.6 4) Burada textboxa bilgi girii yapldnda @ ve . iaretlerini kontrol edecektir (ekil 3.7).

ekil 3.7

Kalp deerler dnda kendimize gre giri karakter kontrol yaptrabiliriz. Regular Expression Editor penceresinde stte Custom seeneini iaretleyerek Validation expression alana ifadeleri yaznz. Karakterleri aadaki tabloda inceleyebilirisiniz.

Karakter a 1 * + () | []

Tanm Yazdmz bir karakter a ise a deerini bekler Rakamsal deer girii 1 ise 1 deeri bekler 0 veya daha fazla nceki karakterin tekrarlanmas 1 veya daha fazla nceki karakterin tekrarlanmas Gruplama ki seenekten birisi yazlacak ki deer ve arasndaki saylar girilecek

rnek a=a 1=1 5* = ,5,55,555 5+ = 5,55,555 (55)+ = 55,5555 1|2 = 1 veya 2 [14] = 1,2,3 veya 4

29

[^] \s \S \d \D \w {}

Belirtilen aralk dndaki tr deerler girilecek Boluk Karakteri Boluk dndaki tm karakterler Rakamsal deer girilir Rakam olmayan tm karakterler Kelimelerde kullanlan tm karakterler Belirtilen karakterin tekrarlanma adeti

[^13] =1,2 ve3 dndaki tm deerler \s = , , \S+ = abc,123 \d+ = 1234567890 \D+ = abcdefgh \w+ = netsoft a{1} = a b {13} = b,bb veya bbb

Bunlarn dnda sizlere bir kac regular expressionlar yazlr.

Veri
EPosta Adresi ifre Telefon Girii

Expression Kodu
\S+@\S+\.\S+ \w{48} \d{3}\s\d{3}\s\d{2}\s\d{2}

Tanm
@ ve . iaretleri kontrol edilecektir. En az 4 en fazla 8 karakterlik ifre 312 473 20 74 formata uyacaktr.

UYGULAMA 4 1) Bu uygulamamzda CompareValidator kontrolnden bahsedeceim. Uygulamamz iin Web sitemize alt alta iki adet textbox ve bir adet de buton koyalm. kinci textbox mzn yanna CompareValidator kontrol koyalm (ekil 3.8).

ekil 3.8 2) CompareValidator kontrolnn properties penceresinde ErrorMessage yazsn Ayn Deerler Giriniz olarak deitiriniz. Daha sonra ControlToCompare seeneinde textbox1i, ControlToValidate seeneinde ise textbox2i seiniz (ekil 3.9).

ekil 3.9

30 3) Daha sonra kodumuzu altralm. Textbox1e ve Textbox2 kontrollerine ayn deerleri yazmamz gerekmektedir. Buradaki seeneklerden ControlToCompare seeneinde TextBox1i setiimiz iin kontrol bu nesne zerinden olmaktadr (ekil 3.10).

ekil 3.10 Kontrolleri kullanarak Web formlarmzda kullanc hatalarn byk oranda engelleyerek doru bilgilerin gnderilmesini salayabiliriz.

31

32 VERTABANI NEDR? Bir veritaban isminden de anlalaca gibi bilgilerin depoland hiyerarik bir yapdr. Baka bir tanmyla digital ortamda (bilgisayar) saklanan dzenli verilerdir de denilebilir. ADO.NET Web zerinden veritabanna balanmak ve veri ilemleri gerekletirmek iin ADO.NET teknolojinden faydalanarak ilemlerimizi gerekletireceiz. ADO.NET her ne kadar ADO teknolojine benzesede aslnda ok fazla ilgisi yoktur. ADO.NET (Activex Data Objet) tamamiyle yeniden gelitirilen yaps ile verilere ular. ADO.NET verilere eriirken ADO gibi sadece OLEDB Provider deil, onun dnda SQL Provider yapsnda kullanr. ADO.NET veri geilerinde XML yapsna tam uyumlu olduundan salam ve performans yksek her ortama uyumludur. .NET Platformunu yklediimizde sahip olduumuz Providerlar Odbc, Oledb, SqlClient gelmektedir. Fakat Oracle veritabannza balanmak istiyorsanz www.oracle.com adresinden OPD.NETi indirmeniz gerekmektedir. VERTABANINA BALANTI Bir web formu zerinden veritabanna balantmz anlatacam. UYGULAMA 1 Bu uygulamamzda Sql Server 2005de hazrlamanz gereken veritaban rnei aada yer almaktadr. rneimizde Ogrenci adnda bir database (veritaban), bunun ierisindede tblBilgiler adnda bir tablomuz yer almaktadr. Veritabanmz yaptkdan sonra ierisine bilgiler giriniz.

1) Web sayfamza birer GridView ve Button nesnelerimizi ekleyelim (ekil 4.1).

ekil 4.1 2) Butonu ift tklayarak kod alanna geelim. Buton1_Click olayna aadaki kodumuzu yazalm.
using System.Data; //EKLEMEYI UNUTMAYIN

33
using System.Data.SqlClient; //EKLEMEYI UNUTMAYIN protected void Button1_Click(object sender, EventArgs e) { string yol=@"Data Source=SELCUK\SQLEXPRESS;initial Catalog=Ogrenci;integrated security=sspi"; SqlConnection baglan=new SqlConnection(yol); string sorgu = "select * from tblbilgiler"; SqlDataAdapter sadp = new SqlDataAdapter(sorgu,baglan); DataSet ds = new DataSet(); sadp.Fill(ds); this.GridView1.DataSource = ds.Tables[0]; this.GridView1.DataBind(); }

3) Kodumuzu altrmadan nce biraz anlatalm. Bir veritabanndna bilgi almak iin baz kurallarmz sz konusudur. Bunlar birincisi veiritabanmzla balant kurmaktr. Balatmz SqlConnection snf ile gerekletiriyoruz. Snfmzn ald parametrede ise; Data Source: Veritabanmzn (SQL Server) ismini veya kurulu olduu bilgisayarmzn IP sini yazmamz gerekmektedir. Data Source= Selcuk Data Source=Selcuk\\SqlExpress Data Source=192.168.1.100 initial Catalog: Bu alana Sql Serverda oluturduumuz veritabanmzn ismini yazmamz gerekiyor. initial Catalog=Ogrenci integrated security: Buras bizim gvelik ksmlarn yazacamz alan, SQL Server kurulma esnasnda eer System Account ile kuruldu ise integrated security=sspi dememiz yeterlidir. Fakat kullanc ad ve ifre girildi ise uid ve pwd ksmlar eklenmelidir. integrated security=sspi integrated security= true integrated security= true;uid=sa;pwd=sa integrated security=true;uid=sa;pwd=; //ifrenin bo olmas durumunda kinci aamada SqlDataAdapter ksm SQL sorgularmz yorumlamas gereken bir snf olarak deerlendirebiliriz. Boylece select sorgusu yorumlanyor ve sonuc Dataset e aktarlarak sanal bir tablonun oluturulmas salanmaktadr. Artk DataSeti GridViewe aktararak sonularn grntlenmesi salanacaktr. 4) Artk kodumuzu altrarak butonumuza bastmza karmza datalarmz gelecektir (ekil 4.2).

34

ekil 4.2 Datalarmz getirdikten sonra, veritabanmza kayt eklemek kartmak gibi sql sorgularla ilemlerimizi geekletirebiliriz. UYGULAMA 2 1) Bu uygulamamzda Web sitemizi drt textbox, drt buton ve bir tanede GridView yerletirelim (ekil 4.3).

ekil 4.3 2) Aadaki kodu yazdktan sonra altralm

using System.Data; //Eklemeyi unutma using System.Data.SqlClient; //Eklemeyi Unutma

string yol = "Data Source=Selcuk\\SqlExpress;" +"initial Catalog=Ogrenci;integrated security=sspi"; SqlConnection baglanti; SqlDataAdapter sadp; DataSet verial;

35
protected void btnEkle_Click(object sender, EventArgs e) { string ad, soyad, adres, yas; ad = this.txtAd.Text; soyad = this.txtSoyad.Text; adres = this.txtAdres.Text; yas = this.txtYas.Text; baglanti = new SqlConnection(yol); string ekle = "insert into tblBilgiler" + "(ad,soyad,adres,yas) values " + "('"+ad+"','"+soyad+"','"+adres+"',"+yas+")"; sadp = new SqlDataAdapter(ekle, baglanti); verial = new DataSet(); sadp.Fill(verial); Response.Write("Kayt Eklendi"); //Textboxlara Deerlerimizi Girip //Ekle Butonuna bastnzda Kayt Eklendi //Yazs kacaktr

} protected void btnSil_Click(object sender, EventArgs e) { string ad; ad = this.txtAd.Text; baglanti = new SqlConnection(yol); string sil = "delete from tblbilgiler where Ad='"+ad+"'"; sadp = new SqlDataAdapter(sil, baglanti); verial = new DataSet(); sadp.Fill(verial); Response.Write("Ad "+ad+" olan Kayt Silindi"); // Ad ksmnda girilen isim silinecektir

} protected void btnGuncelle_Click(object sender, EventArgs e) { string ad; ad = this.txtAd.Text; baglanti = new SqlConnection(yol); string guncelle = "Update tblbilgiler set yas=30 where ad='"+ad+"'"; //Adn girdiniz kiinin YAI 30 olacaktr. sadp = new SqlDataAdapter(guncelle, baglanti); verial = new DataSet(); sadp.Fill(verial); Response.Write("Ya Gncellendi"); //Adn girdiimiz Kayt da ya 30 olacaktr

} protected void btnDataGetir_Click(object sender, EventArgs e) { baglanti = new SqlConnection(yol); string guncelle = "select * from tblbilgiler"; sadp = new SqlDataAdapter(guncelle, baglanti); verial = new DataSet(); sadp.Fill(verial); this.GridView1.DataSource = verial.Tables[0]; this.GridView1.DataBind(); }

36 Kodu yazdktan sonra altrdmzda veritabanmza kayt ilemlerini gerekletirmi olacaktr (ekil 4.4).

ekil 4.4

Access veritabanna balanmak iin Data.SqlClient snfn yerine Data.Oledb snfn getirmeniz gerekmetedir. Provider satr Sql Server balantsndan farkldr. string baglan= Provider=Microsoft.Jet.Oledb.4.0;Data Source=c:\\veritabani.mdb; eklinde yazlmaldr.
SQLDATASOURCE Aslnda tm veritabanlarna balanmak iin kullanlr (ekil 4.6). Aslen Sql Server ve Oracle gibi server tabanl veritabanlara balanmak iin kullanlr. Uygulamamzda SqlDataSource nesnesini kullanarak GridView nesnemize datalarm getireceiz.

ekil 4.6 UYGULAMA 3 1) Bu uygulamamz iin web sayfamza birer adet GridView koyalm (ekil 4.5).

ekil 4.5

37 2) Web sayfamza SqlDataSource nesnesi koyunuz. Daha sonra SqlDataAdapter den Configure Data Source ksmnda tklayarak Configure Data Source penceresini anz (ekil 4.6).

ekil 4.6 3) Alan pencereden New Connection butonunu tklaynz. 4) Karmzda gelen ksmdan Add Connection penceresinden Server Name ksmndan Sql Server adn seiniz (ekil 4.7).

ekil 4.7 5) Ayn penceresinin altnda bulunan Select or enter a databa name ksmndan Ogrenci veritabanmz seiniz (ekil 4.8).

ekil 4.8

38 6) Veritabanmzda setikten sonra OK butonuna basarak pencereyi kapatalm. 7) Daha sonra seilen database ismi ekranda grnecektir ekil(4.9).

ekil 4.9 8) Daha sonra Next butona basarak Connectionstring parametresi gelecektir. Buray gemek iinde next butonuna basnz. 9) Daha sonraki pencerede ilemlerin grlmesi gereken kolonlar sememiz gerekecektir. Btm kolonlar semek iin * checkboxn tklayarak next butonuna basnz (ekil 4.10).

ekil 4.10 10) Daha sonraki pencerede ilemimizin sonuna gelmi bulunmaktayz. Test Query butonuna bastnzda karmza tblbilgiler deki tm datalar gelecektir. lemimize Finish diyerek bitirelim (ekil 4.11).

ekil 4.11 11) Bylece SqlServer zerinde bulunan Ogrenci veritabanndaki tblOgrenciler tablosuna balanm durumdayz. 12) GridView nesnemizi tklayarak properties penceresinden DataSourceID zelliinden SqlDataSource1 seeneini tklaynz (ekil 4.12).

39

ekil 4.12 13) DataMember zelliinden ise DefaultView seeneini seiniz (ekil 4.13).

ekil 4.13 14) Artk kodumuzu altrarak GridViewe datalarmzn aktarldn grebiliriz (4.14).

ekil 4.14 15) Database balat ilemimiz bittikden sonra GridView seeneini tkladnzda stte kan ok iaretini tkladnzda karmza gelen pencereden Enable Paging seeneini iaretleyerek sayfalarn olumasn salayabiliriz (ekil 4.15). Her sayfada grnecek kayt saysn properties penceresinden Page Size deerini deitirerek ayarlayabilirsiniz.

ekil 4.15

40 UYGULAMA 4 1) Uygulamamzda bir nceki uygulamamzn devam olacaktr. Bunun iin bir nceki projemizi aalm ve ek olarak bir textbox nesnesi ekleyelim (ekil 4.16).

ekil 4.16 2) GridViewi dan Enabled Selection seeneini seiniz (4.17). Bylelikle setiimiz satr belirlemi olacaz.

ekil 4.17 3) Daha sonra GridView nesnemizi ift tklayarak GridView1_SelectedIndexChanged olayna aadaki kodumuzu yazalm.
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { int deger = this.GridView1.SelectedIndex; this.TextBox1.Text = this.GridView1.Rows[deger].Cells[2].Text; }

4) Bylece setiiz satra ait Ad kolonu textboxa aktarlacaktr (ekil 4.18).

41

ekil 4.18 DATALIST En ok ve olduka faydal olan bir kontrol olan DataList bir ok site yapma aamanzda faydal olacaktr. Bende bu dorultuda sizlere bir portal mant ile anlatacam. imdi dnelim bir bir sitede sol tarafda kategorilerin bulunduu ve bu kategorilere bal makale balklar ve bu makalelerinde detaylarn kullanclara okutmann olduunu kolay greceksiniz. Uygulamamza balamadan nce Ogrenci veritabanmza bir tablolar ekleyelim. Tablolalarmzn yaplar aada yer almaktadr. Bu tablolarn biri sol men iin kategoriler bulunacaktr. Dier tablomuzda ise makale durumlarn bildirecek bir tablo olacaktr (ekil 4.19).

tblKategori
ekil 4.19

tblMakale

Tablolarmza girilen deerler aada yer almaktadr (ekil 4.20).

tblKategorideki KatDurum kolonlarn dikkatle yaznz.

tblMakale tablosundaki KayDurum kolonuna bal olarak sorgu ekilecektir. ekil 4.20

42 Veritaban ilemlerimizi bittiine gre artk kodlama ile ilgili ilemlerimize devam edebiliriz. UYGULAMA 5 1) Yeni bir web sayfas aalm ve sayfamza bir adet datalist nesnemizi ekleyelim. Daha sonra web sayfamz ift tklayarak Form_Load olayna aadaki kodumuzu yazalm. using System.Data.SqlClient; //Eklemeyi unutmaynz.
protected void Page_Load(object sender, EventArgs e) { string yol = "Data Source=Selcuk\\SqlExpress;" + "initial Catalog=Ogrenci;integrated security=sspi"; SqlConnection baglan = new SqlConnection(yol); string sorgu = "select * from tblKategori"; //Kategori tablosunun tm kolonlar getir. SqlDataAdapter sadp = new SqlDataAdapter(sorgu,baglan); DataSet ds = new DataSet(); sadp.Fill(ds); this.DataList1.DataSource = ds.Tables[0]; this.DataList1.DataBind(); }

2) DKKAT! Yukardaki kodu yazp altrdmzda karmza bilgiler gelmeyecektir. Bilgilerin gelmesi iin kolonlar tek tek istediimiz ekilde arabiliriz. Bunun iin CodeBehind alanndan karak Source ksmna geliniz (ekil 4.21).

ekil 4.21 3) DataList kod ierisine gelerek aadaki kodu yaznz (ekil 4.22).

43

ekil 4.22 4) Kodumuzu yazdkdan sonra altrdmzda Kategoriler ekrana gelecektir (ekil 4.23).

ekil 4.23 5) Bundan sonraki yapacamz ilem bu kategorilere link vererek tkladmz birime gre makalelerin gelmesini salyacaz. Web sayfamza Web Site > Add New Item mensnden yeni bir web form ekleyelim. Web formumuzun ismi Default2.aspx olarak kalabilir. 6) Default.aspx deki source ksmndaki kodu deitirerek kodumuzu altralm (ekil 4.24).

ekil 4.24 7) Bu kodumuzda yer alan nemli bir ksm hangi sayfaya gidecei ve hangi deeri tayacan belirlemi olacaktr. Default2.aspx : Hangi dosyay aacamz belirtebiliriz. ?Gonder= : Gonder deikenine gndereceimiz deeri belirler. Biz burada gelen datamza ait KatDurum kolonunu gnderiyoruz (ekil 4.25).

44

ekil 4.25 8) Artk Default2.aspx sayfamzda Gonder deikenine ait Asp.Net linkini tkladmzdan dolay aspnet deerini getirmitir. 9) imdi ise Default2.aspx sayfasndan bu deeri alarak buna gre makalelerimizin gelmesini salayacaz. 10) Default2.aspx sayfamza bir tane Repeater kontrol yerletirelim. Default2.aspxin Form_Load olayna kodumuzu yazalm.
protected void Page_Load(object sender, EventArgs e) { string gelenveri=Request.QueryString["Gonder"]; //Gelen GONDER deikenini gelenveri ye aktar string yol = "Data Source=Selcuk\\SqlExpress;" + "initial Catalog=Ogrenci;integrated security=sspi"; SqlConnection baglan = new SqlConnection(yol); string sorgu = "select * from tblMakale where kaydurum='"+gelenveri+"'"; //Kategori tablosunun tm alanlarn getir. SqlDataAdapter sadp = new SqlDataAdapter(sorgu, baglan); DataSet ds = new DataSet(); sadp.Fill(ds); this.Repeater1.DataSource = ds.Tables[0]; this.Repeater1.DataBind(); }

11) Kodumuzu yazdktan sonra datalarmzn gelmesi DataList nesnemize benzemektedir. Bunun iin Source ksmna gelerek kodu yaznz (ekil 4.26).

ekil 4.26

45 12) Default.aspx sayfamz altrarak kategorilerden birini tkladmzda tblMakale den tklanan linke gre makaleler listelenecektir (ekil 4.27).

ekil 4.27 Bu uygulama sonucunda data zerinde daha esnek kodlama sz konusu olacaktr. REPORTVIEWER Raporlarmz grntlemek iin kullanlan bir kontroldr. Aslen raporlamada Crystal Report veya Reporting Services kullanmak professyonel bir raporlama yapmak iin gereklidir. Reportviewer bu kontrollerin daha basitletirilmi halidir (ekil 4.28).

ekil 4.28 UYGULAMA 6 1) Yeni bir Web sayfas anz. Solution Explorerda bulunan projemizin ismini sa tklayarak Add New Item seeneini tklaynz (ekil 4.29).

ekil 4.29 2) Karmza gelen Add New Item penceresinden DataSet objesini seerek Add butonuna basnz. Karmza gelen uyar penceresinde Yes diyerek geelim. Solution explorerda App_Code klasr oluacak ve ierisine DataSet1.xsd dosyasn eklendiini greceksiniz. Eklendikten sonra karmza balant sihirbaz gelecektir. Sql Server dan Ogrenci veritabann seerek balantmz salayalm. Tablolardan tblBilgileri seiniz. Tablo ekledikten sonra karmza tablonun kolonlar gelecektir (ekil 4.30).

46

ekil 4.30 3) Yine projemizin stnde sa tklayarak bu sefer Report nesnesini ekleyelim (ekil 4.31).

ekil 4.31 4) Report nesnemizi ekledikten sonra karmza Report Design gelecektir. Kolonlarmz DataSource ksmnda grmemiz gerekiyor (ekil 4.32).

ekil 4.32 5) Kolonlardan Ad, Soyad ve Adres kolonlarn srkleyerek tasarm alanna koyunuz (ekil 4.33).

47

ekil 4.33 6) Default.aspx sayfasna ReportViewer kontrol ekleyiniz. Chose Report ksmndan Report.rdlc dosyanz seiniz (ekil 4.34).

ekil 4.34 7) Kodumuzu altrdmzda kaydn geldiini grebiliriz. Report tasarm alanna gelerek tasarm alanna chart (grafik) ekleyelim (ekil 4.35).

ekil 4.35 8) Grafik tipini deitirerek istediiniz grnty elde edebilirsiniz. Tasarm alanna eklenin grafiki sa tklayarak Chart type belirleyiniz (ekil 4.36). Biz rneimizde Simple Column seeneinden gstereceiz.

48

ekil 4.36 9) Grafiimizi bir kez tkladmzda grafikin kenarlarnda alanlar oluur. Bu alanlar st tarafda bulunan alan nemlidir. Buras gelen datalarmzn grafik eklinde olumasn salar. Sa taraf ise hangi rengin kime it olduunu gsterecek. Ad ve yas data kolonlarn srkleyip braknz. (ekil 4.37).

ekil 4.37 10) Default.aspx sayfamz altrarak grafiimizin olumas salanacaktr (ekil 4.38).

49

ekil 4.38 Bylelikle basit bir dzeyde raporlamada ReportViewer kullanabiliriz. Daha profesyonel raporlamalar in CrystalReport kullanlacaktr. Crystal Reportu sonraki konularda anlatacam.

50

51 NAVIGATION KONTROLLER Asp.Net 2005de yeni kontrollerden olan navigation kontoller web ortamnda kullanlan birok ilemlerimizi daha rahat yapmamz salamaktadr (ekil 5.1).

ekil 5.1 SITEMAPPATH Bir web sayfamza ait bilgilerin hiyerarik bir dzen gstermemiz gerektiinde kullanlr (ekil 5.2).

ekil 5.2 UYGULAMA 1 1) Bir web sayfas aalm ve Add New Item dan dier sayfalarmz hazrlayalm. Sayfalarmzn adlar ana.aspx, Dergiler.aspx, Kitaplar.aspx, bilgisayarDergisi.aspx, romanlar.aspx, psikoloji.aspx olarak oluturalm (ekil 5.3).

ekil 5.3 2) Dosyalarmz oluturduktan sonra Project > Add New Item diyerek Site Map nesnesini seerek Web.sitemap dosyasn oluturunuz. 3) Web.sitemap dosyamz aadaki gibi dzeltmeden nce isterseniz nasl bir yapmzn olduunu klasr mant ile grelim (ekil 5.4).

ekil 5.4

52 4) Birimlerin ematik hali anlaldna gre Web.sitemap dosyamzn kod ksmlarn deitirelim.
<?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="Ana.aspx" title="Ana Sayfa"> <siteMapNode url="Dergiler.aspx" title="Dergiler"> <siteMapNode url="Bilgisayardergisi.aspx" title="Bilgisayar"/> </siteMapNode> <siteMapNode url="Kitaplar.aspx" title="Kitaplar"> <siteMapNode url="romanlar.aspx" title="Roman"/> <siteMapNode url="psikoloji.aspx" title="Psikoloji"/> </siteMapNode> </siteMapNode> </siteMap>

5) Kodumuzu yazdktan sonra her sayfaya SiteMapPath kontrol ekleyiniz. Otomatik olarak sayfa isimleri eklenecektir. Bylece yaptmz aa sistemi oluacaktr (ekil 5.5).

ekil 5.5 MENU Web sayfalarnda ska kullanlan alr menu tanmylada bildiimiz menu artk her web sayfasnda yer almaktadr. Asp.Net 2.0 bize menu nesnesini kullanmamz salamtr (ekil 5.6).

ekil 5.6 UYGULAMA 1 1) Yeni bir web sayfas aalm. Web sayfamza bir adet Menu kontrol ekleyelim (ekil 5.7).

ekil 5.7 2) Menu ekledikten sonra karmza gelen Menu Tasks mensnden Edit Menu Items seeneini tkladnzda Menu Item Editor alacaktr.

53 3) Alan pencereden Add a Root Item dmesini tklayarak menu hazrlamaya balayabiliriz (ekil 5.8).

ekil 5.8 4) Dmeye tkladktan sonra menu iin ana birim ve alt birimleri oluturalm (ekil 5.9).

ekil 5.9 5) Her bir mennn zellikleri yer almaktadr. Menulerden birisini tklayp properties penceresinden ayalamalar yapabiliriz.

zellik Ad Text ImageUrl NavigateUrl Tool Tip Target Enable

Tanm Menu Yazs Menu Yazlarn Sol Tarafna Resim Koyar Link Tklandnda Gidecek Olan Sayfa / Adres Tool Tip Yazsn Ekler Framelerde Kullanlan Hedef Pencere Ad False ise seilemez alt seenekleri gelmez

6) Kodumuzu altrdmzda menmz kullanabiliriz.

54

55 RAPORLAMA Raporlama her yazlmda olduu gibi web ortamndada gerekli olan bir durumdur. Rapor hem kat ortamna hemde isterseniz dier ortamlara tamak olarak kaydetmektir. Raporlamada en iyi aralardan biri olan Visual Studio .NETi kurduktan sonra ierisinden gelen Crystal Report nesnesini anlatacam. Yeni bir web sayfas atktan sonra Web Site > Add New Item seeneinden Crystal Reportu projemize ekleyebiliriz. Crystal Reportun dosya uzants rpt trnde grlecektir. UYGULAMA 1 1) Bir web sayfas aalm. Daha sonra Web Site > Add New Item seeneini tklaynz. Karmza gelen pencereden Crystal Report nesnesini setikten sonra Add butonuna basnz (ekil 6.1).

ekil 6.1 2) Add butonuna bastktan sonra karmza Crystal Report Gallery penceresi gelecektir (ekil 6.2). Pencereden Standart kat dzenini seerek OK butonuna basnz.

56

ekil 6.2 3) Daha sonra karmza veritabanmza balant salamak iin Standart Report Creation Wizard penceresi gelecektir. Biz uygulamamzda SQL Server 2005 veritabanmza balanacaz. Bunu iin alan pencereden Create New Connection ksmndan OLE DB seeneini seiniz (ekil 6.3).

ekil 6.3 4) OLE DB seenei tkladmzda karmza veritaban balantmz iin OLE DB (ADO) penceresi gelecektir. Buradan Microsoft OLE DB Provider for SQL Server seeneini seerek Next dmesine basnz (ekil 6.4).

57

ekil 6.4 5) Daha sonra karmza gelen pencereden SQL Server balantmz gerekletirelim. Bu ksmda Sql Server veritabanmz ve tablomuzu (ogrenci) seelim (ekil 6.5).

ekil 6.5 6) Tablomuzu setikden sonra next butonuna bastktan sonra karmza setiimiz deerlere gre bilgiler gelecektir Finish butonuna basarak balat ilemimizi bitirelim.

58

Baz durumlarda Server semek istediimizde hatalar alabilir veya ismini gremeyebiliriz. Bu durumda direk olarak klavyeden Sql Servern tam adn girerek ileminize devam edebilirsiniz.
7) Veritabanmza balandmza gre artk ilemimize devam edebiliriz. Tekrardan Standart Report Creation Wizard penceresi grnecektir. Bu sefer OLE DB (ADO) nun altnda balant yaptmz veritabann grebiliriz. Burada Ogrenci veritabannn altndan dbo blmnden tblBilgiler tablosunu seerek sa tarafa aktaralm. Sa tarafa (Selected Tabloes) ift tklayarak geirebiliriz (ekil 6.6).

ekil 6.6 8) Tablomuzu setikten sonra Next dmesine basarak devam edelim. Karmza ekranda hangi kolonlar grmek istediimizi soracaktr. Biz tblBilgiler tablosundaki tm kolonlar yine seerek sa tarafa geiriniz (ekil 6.7).

ekil 6.7

59 9) Kolonlar setikten sonra FINISH butonuna basarak ilemimizi sonlandralm. Karmza CrystalReport.rpt dosyas alacak ve setiimiz kolonlar bir dzen ierisinde yerlemi olacaktr (ekil 6.8).

ekil 6.8 10) Raporumuzu web sayfamzda grntlemek iin web sayfamza ilk olarak CrystalReportSource nesnesini ekleyiniz (ekil 6.9).

ekil 6.9 11) Web sayfamza eklediimiz CrystalReportSourceu seiniz. Configure Report Source seeneini tklaynz (ekil 6.10).

ekil 6.10 12) Karmza gelen Configure Report Source penceresinden CrystalReport.rpt dosyamz setikten sonra OK butonuna basnz (ekil 6.11).

ekil 6.11

60 13) Dosyamz setikden sra geldi ierisindeki bilgileri grntlemek. Bunu iin web sayfamza CrystalReportViewer ekleyelim ve Choose Report Source seeneinden CrystalReportSource1i seiniz (ekil 6.12).

ekil 6.12 14) Raporumuzu setikten sonra CrystalReportViewern grnts deiecektir. Burada bizim web sayfamz altrdmzda nasl bir grnt olacana dair bize bilgi vermektedir (ekil 6.13).

ekil 6.13 15) Artk web sayfamz altrarak raporumuzu grebiliriz. Burada printer ikonunu tkladmzda bilgiler yazcdan kacaktr. Buna ek olarak raporumuzun stteki balkta bulunan ilk buton olan EXPORT butonuna basarak excel, word, pdf formatnda raporumuzu alabiliriz (6.14).

ekil 6.14

61 UYGULAMA 2 1) Bir nceki uygulamzn devam olacandan nceki raporlama projemizi aalm. Bu uygulamamzda Crystal Reportun bir ka zelliinden bahsedeceim. Bunu iin Crystal Report tasarm alanna geelim. Burada bulunan Field Explorer ksmnda Formule Fields ksmn sa tklayarak New seeneini seiniz (ekil 6.15).

ekil 6.15 2) New dedikten sonra karmza Formule Name ksm alacaktr. Burada yapacamz formul ismini istemektedir. Bu ksma bir isim yazarak Use Editor butonuna basnz (ekil 6.16).

ekil 6.16 3) Use editor ksmnda field ve formulleri grebiliriz. Biz bu formlmzde Ad ve Soyad kolonlarn birletirerek tek birim olarak kullanmamz salayacaktr. 4) Biz rneimizde Ad ve Soyad kolonlarn birletirerek tek parametrede getirreceiz. Bunu iin formul alanna (ekil 6.17); {tblbilgiler.Ad}+{tblbilgiler.Soyad} Kodunu yazarak penceremizi kapatalm.

ekil 6.17

62 5) Field Explorerda bulunan Formule Fieldsn altnda oluturduumuz deeri grebiliriz (ekil 6.18).

ekil 6.18 6) Oluturduumuz formlmz rapor tasarm alanna srkleyiniz (ekil 6.19).

ekil 6.19 7) Kodumuzu altrdmzda Ad ve Soyad ekrana gelecektir. Bylelikle tek tek kolonlarlar uramaktanda belli ayrlmayan birimleri bu ekilde sunabiliriz. Crystal Report tabikide bu kadar basit ilemlerle kalmyor. Crystal Reporun detaylarna girmeden nce ekranmz tanyalm. Bylece pencereleri isimleriyle belirttiimizde nereden bahsettiimizi anlam olacaz. En ok kullanlan penceremiz olan Field Explorer ksm, btn ilemlerimizi yapmamz salayan bir yer olarak tanmlanabilir (ekil 6.20) .

ekil 6.20

63 Raporlamamz hazrladkdan sonra datalarn nasl grntlendiini grmek iin bir nizleme yapabiliriz. Bu ilemide tasarm alannn altnda bulunan Main Report Preview blmne girerek grebiliriz (ekil 6.21).

ekil 6.21 Bylelikle web sayfalarna balamadan son durumunu grebilmekteyiz. Bunlarn dnda tasarm alanna yerleen her objenin zelliklerini deitirebiliceimiz Properties penceresi yer almaktadr. ASP.NETin giriindede anlattmz Properties penceresinden bir fark yoktur (ekil 6.22).

ekil 6.22 imdi size Crystal Reportdan biraz bahsetmek istiyorum. Raporlama konusunda birok durumu burada zerek ilemlerinizin daha kolay olduu greceksiniz. RNEK 1 Field Explorerdan, Formule Fields ksmndan Kosul adnda bir forml sistemi oluturalm. Burada yapacamz rnek ya kolonunu kontrol etmek olacaktr. Eer kiinin ya 28 ve daha kk ise ekranda sadece ad yazacak. Byk ise adn ve yan yazmasn salyacaz. Bunun iin kod alanna aadaki kodu yazp Kosul isimli formulmz tasarm alanna ekleyelim. Kodumuzu altrdmzda 28 ve daha kk ya olanlarn sadece ad kolonlar grnecektir (ekil 6.23). if {tblbilgiler.Yas} <=28 Then {tblbilgiler.Ad} Else {tblbilgiler.Ad} & " , " & {tblbilgiler.yas}

Kodlama Visual Basic editr olduundan C# dan farkl bir kodlama sz konusu olacaktr. Burada eer tblBilgiler.Yas kolonundaki deer 28 eit yada kk ise sadece tblBilgiler.Ad yazlacak. Byk ise Ad ve Yas kolonlar yazlacaktr.

64

ekil 6.23 RNEK 2 Bu rneimizde tm kolonlarmz tek bir formul ierisinde toplayarak raporlamada daha dzgn bir grnt salayabiliriz. Birlestir adnda bir formul yaratalm ve kodumuzu yazp altralm. {tblbilgiler.Ad} & chr(13) & {tblbilgiler.Soyad} & chr(13) & {tblbilgiler.Adres} & chr (13) & {tblbilgiler.Yas} Kodumuzu altrdmzda tm bilgiler gelecektir. Kodlamada chr(13) ksm ascii karakterde Enter yani alt satra gemek iin kullanlr (ekil 6.24).

ekil 6.24

65 Raporlamada en byk ihtiyalarmzdan biriside raporlama esnasnda grafik kullanmaktr. Deerlerimize gre kada grafik aktarmak iin Chart objesini kullanmamz yeterlidir. Bunu iin bir ya grafii kartalm. Chart objesini st menden Cystal Reports > Insert > Chart seeneini tklayabilir yada ara ubuundan Chart objesine tklayabiliriz (ekil 6.25).

ekil 6.25 Chart objesini tkladmzda karmza Chart Expert penceresi gelecektir. Burada grafik trn veritipimize uygun olarak seebiliriz (ekil 6.26). Biz rneimizde Bar trn kullanacaz.

ekil 6.26 RNEK 3 Bar trn setikten sonra Data tab alanna girerek kolonlarmz seeceiz. Data ksmda Show Values ksmna Yas kolonunu aktaralm (ekil 6.27).

ekil 6.27

66 Yas kolonuna gre grafiimi olumutur. OK butonuna basarak grafik ilemimizi sonlandralm. Bylelikle kiilerin ya grafii kmtr (ekil 6.28).

ekil 6.28 imdi baz rapor detaylarmz anlatabilmemiz iin Ogrenci veritabanmza tblPersonel adnda bir bir tablo oluturacaz . Kolon Ad ID Ad Soyad Yas Tarih Email Websayfasi Veritipi nt nvarchar (50) nvarchar (50) nt DateTime nvarchar (100) nvarchar (50) Aklama (rnek Deer) PK Seluk zdemir 26 05.07.1981 selcukmct@gmail.com www.google.com

Tablomuzu oluturduktan sonra ierisine bilgiler giriniz. Buradaki rneimiz kiinin mailine html ilemi gibi stne tkladmzda outlook programnn almasn ve Gnder (to) ksmnda o kiinin mail adresinin yazlmasn salamak veya web adresine gitmemiz gerekiyorsa bu ilemi kolayca yapabiliriz. rnek 4 Projemize yeni bir rapor dosyas ekleyiniz ve rapor dosyanz yeni oluturduunuz tblPersonel tablosuna balaynz. Burada mailgonder adnda yeni bir Formule Fields ekleyiniz. Buraya email kolonunu ekleyiniz (ekil 6.29).

ekil 6.29

67 Save and Close dmesine bastktan sonra penceremizi kapatalm. Daha sonra mailgonder formulunu rapor tasarm alanna koyalm. Eklenen formulun ustunu sa tklayarak Format Object alanna girelim (ekil 6.30).

ekil 6.30 Format Editor penceresi alacaktr. Buradan ust tab seeneklerden Hyperlink ksmna girelim. Mail adresi olacandan Current EMail Field Value seeneini seerek atanan data kolonunun otomatik olarak mailto kavramn alacan syleyebiliriz (ekil 6.31). OK butonuna basarak penceremizi kapatalm.

ekil 6.31 Raporumuzu web sayfamza atayarak altralm. Karmza datadan gelen mail adresleri tkladmzda Outlook program alarak Gnder (to) ksmnda mail adresi yazlm olacaktr (ekil 6.32).

68

ekil 6.32

mailto:funda.koyuncu@netsoft.com.tr Bu kod satr html ortamnda alan ve internet explorerlarn tand bir kod yorumudur. Yukarda anlattmz durumda html mant ile almas gerektirinden mailto grnmektedir.
CRYSTAL REPORT OBJELER Raporlarmz dzenleme aamasnda olduka kullanl objeler raporlarmz daha iyi anlamamz salayacaktr. Objelerimize raporumuzun tasarm alannda ToolBox penceresinden ulaabiliriz (6.33).

ekil 6.33 Text Object raporumuza yazacamz sabit bir yaz iin kullanlabilir. Her raporun bir bal vardr. Bunun iin Text Objecti Page Header alanna srkleyiniz ve ierisine rapor balmz yazalm (ekil 6.34) .

ekil 6.34

69 Text Object nesnemizin font ayar, rengi gibi deiikleri yapmak iin Text Objecti sa tklayarak Format Object blmne giriniz. Karmza gelen Format Editor penceresinden Font tabn seniz (ekil 6.35).

ekil 6.35 Kiilere uyarc bildirimler yapmak iin bu tarz font ayarlamalar yararl olacaktr (ekil 6.36). Eer Text Object yazsn dzenlemek istiyorsanz yine objemizin stnde sa tklayarak Edit Text Object seeneini kullanabilirsiniz.

ekil 6.36 Line Object ve Box Object ler tasarm alannda izgi ve kare izmek iin kullanlr. Kullanmlar daha ok deerieri birbirinden ayrmak iin kullanlr. Line Objecti seerek Section ksmnda grnen mailgonder formlnn altna izgimizi izelim (ekil 6.37).

ekil 6.37 Bylece her mailimizin altnda bir izgi izmi olacaz. Mail adresleri daha dzgn grnmesinde Line Object rol oynayacaktr (ekil 6.38). izgi zerinde kalnlk, renk, tip olarak ayarlamalar yapmak iin izgi zerinde sa tklayarak Format Objet seeneini semeniz yeterli olacaktr.

70

ekil 6.38 Sizlere yardmc olduunu dndm baz formlleri ve sonularn anlataym. DateTimeToDate Veritabanndan veritipini alr. Gelen deeri GG.AA.YYYY formatnda yazar. DateTimeToDate({tblPersonel.Tarih}) Sonuc: 10.10.2006 Direk olarak tarih kolonunu eklediinizde sonu 10.10.2006 00:00:00 olarak grnecektir. Average Belirttiimiz bir kolonun veya belirleyceimiz deerlerin ortalamasn almak iin kullanlr. Average({tblPersonel.Yas}) Average ([10,20,30,34,67]) Maximum Setiimi kolon yada deerler ierisinden en byk olann getirir Maximum ({tblPersonel.Yas}) DistinctCount Gelen deerler ierisinden ayn olanlar dndrmez toplam deeri verir. DistinctCount(["Funda","Kadir","Funda","Seluk","Kadir","Elif"]) Sonuc : Deer 4 kar, Funda ve Kadir isminde 2 tane olmasna ramen 1 tane sayar. Sum Verilen kolonun veya deerlerin toplamn verir. Sum({tblPersonel.Yas}) Sum([10,20,30,40,50,60])

71 Sonuc: Yas kolonunun toplamn verecektir. Dieri ise saylarn toplamn verecektir. UpperCase Datamzdan nasl gelirse gelsin raporlamada esnasndan harfler byk yazar. UpperCase ({tblPersonel.Ad}) Sonuc: Ad kolonu byk harflerle gelecektir. LowerCase Datamzdan nasl gelirse gelsin raporlamada esnasndan harfler kck yazar. LowerCase ({tblPersonel.Ad}) Sonuc: Ad kolonu kk harflerle gelecektir. Kendimiziin yazdklarnn dndan Crystal Reportun bize sunduu hazr fonksiyonlar bulunmaktadr. Speciel Fields altnda bunlar bulabilirsiniz. Sayfa numaras, kayt numaras gibi hazr fonksiyonlarda kullabiliriz (ekil 6.39).

ekil 6.39 Hazr fonksiyonlarda kullanarak raporlamanz faydal bir kt grnts olarka yaplandrabilirsiniz.

72

73 WEB.CONFIG Asp.Netin yeniliklerinden olan web.config dosyamz aslnda bir ayar dosyasdr. Ayarlarmz bir XML formatnda oluturur ve ona gre ilemlerimizi gerekletirebiliriz. Web.config dosyas Asp.Net almalarnda mutlaka olacaktr kural yoktur. Web.Config olmad durumlarda daha st bir seviyede olan machine.config dosyasdr. Web.Config olmad durumlarda bu dosyadan ayarlar okunur. Machine.Config dosyasn incelemek istiyorsanz (ekil 7.1); C:\Windows\Microsoft.Net\Framework\[Framework Version]\CONFIG\machine.config

ekil 7.1 Asp.Net projemizi atmzda Solution Explorer ksmnda Web.Config dosyasn gremeyiz. Bunu iin alma sayfamza eklememiz gerekmektedir. Web Site > Add New Item seeneini tklaynz (ekil 7.2).

ekil 7.2 Karmza gelen Add New Item penceresinden Web Configuration File seeneini seerek Add butonuna tklaynz (ekil 7.3).

ekil 7.3

74 Soution Explorer da web.config dosyamzn eklendiini grebiliriz. Web.Config dosyamzn birimlerini incelersek...

Birim Ad <trace> <globalization> <customErrors>

<authentication> <sessionState> <webservices> <securityPolicy>

Tanm Asp.Net trace ayarlarnn yaplmasn salar. Uygulamanzn dil, say, para biimleri gibi blgesel ayarlarn yapmanz salar. Uygulamanzda herhangi bir hata verdiinde ne yaplmas gerektii belirlenebilir. Hata sayfasna git, mesaj iletisi ver gibi ilemler yaplabilir. yelik sistemlerinde kullanclarn geerliliini salamak iin kullanlr. Session State ayarlarn bulundurur. Web Sevisleri ile ilgili ayarlar tutar. Kullanabileceiniz gvenlik ayarlarn ierir.

Web.Config nasl kodlama yaplr derseniz bunu rneklerle anlatalm. lk olarak aklmza gelen SQL Server balant ksmn web.config den yapmak nasl oluyor onu gsterelim. UYGULAMA 1 1) Yeni bir web sayfas aalm. Web sayfamza bir adet button ve GrdiView nesneleri yerletirelim. 2) Web.Config dosyamzdab statik bir okuma salanr. string deger= ConfigurationManager.ConnectionStrings["SqlBaglan"]; satr ile okunmas salanmaktadr. 3) Web.Config dosyamza gelerek aadaki kodu yazalm.

<connectionStrings> <add name="SQLBaglan" connectionString="Data Source=Selcuk\SqlExpress;initial Catalog=Ogrenci;integrated security=sspi;" providerName="System.Data.SqlClient"/> </connectionStrings>

Web.Config dosyasnn kod alanna baktnzda <connectionStrings/> olarak yazlarak kapal olduunu grrsnz. Bu satr sildikten sonra kodlamay yapnz. Aksi takdirde hata alacaksnz.
4) Web.config dosyamz yazdktan sonra web sayfamza gelerek Button1 stne ift tklayarak kod alanna geelim. Button1_Click olayna yazdmz SqlBaglanti isimli anahtar aralm. using System.Data.SqlClient; // Eklemeyi unutmayn
protected void Button1_Click(object sender, EventArgs e) { SqlConnection baglan = new SqlConnection();

75
baglan.ConnectionString = ConfigurationManager.ConnectionStrings["SqlBaglan"].ToString(); string sorgu = "select * from tblBilgiler"; SqlDataAdapter sadp = new SqlDataAdapter(sorgu,baglan); DataSet ds = new DataSet(); sadp.Fill(ds); this.GridView1.DataSource=ds.Tables[0]; this.DataBind(); }

5) Kodumuzu yazp altrdktan sonra tm sayfalarda artk ayn balant satrn kullanabiliriz. Bylelikle veritaban yolumuzda bir deiiklik olduunda web.config dosyasndan deitirmemiz yeterli olacaktr. Derleme ilemi gerekmediinden web.config dosyamz dzenlemek iin Visual Studio .NET platformuna gerek olmadan her iletim sisteminde bulunan not defteri (notepad) editrnde aarak dzeltebiliriz. 6) Kodumuzu altrdmzda tblBilgiler tablosu GridView1e gelecektir (ekil 7.4).

ekil 7.4 Web.Config dosyamza hibirey yazmasakta servera (FTP) gnderdiimizde hata alma durumunuz sz konusudur. Bu hata birka gvenlik sorunundan kaynaklanmaktadr.

76

77 LOGIN KONTROLLER Hemen her sitede grdmz yelik alanlarn yazmak eskiden kodlarmz yazmamz gerekirdi. Asp.Net 2.0 ile birlikte gelen Login nesnelerin neredeyse hi kod yazmadan ilemlerimizi yapabiliriz. Toolbox penceresinden Login ksmna baktmzda Login, Login View, Password Recovery gibi yelik nesnelerini grebiliriz (ekil 8.1). Login nesnelerinin almas iin veritabann olumas ve yetkilerin atanmas gibi baz gvenlik dzeylerinin yaplmas gerekmetedir.

ekil 8.1 UYGULAMA 1 1) Yeni bir web projesi aalm. Solution Explorerda proje isminin stn sa tklayarak New Folder seeneini seelim ve StandartUye, Admin adndan iki tane klasr oluturalm (ekil 8.2).

ekil 8.2 2) Daha sonra st menden WebSite > ASP.NET Configuration seeneini tklayalm (ekil 8.3).

ekil 8.3 3) Karmza Asp.Net Web Site Administration Tool web sayfas alacaktr. Gelen pencereden Security linkini tklaynz (ekil 8.4) .

78

ekil 8.4 4) Security blmn tkladktan sonra securiy tabnda adm adm ayar yapacamzdan Use the
security Setup Wizard to configure security step by step linkini tklaynz (ekil 8.5). Karmza ayarar

ekil 8.5

5) Karmza gelen Security Setup Wizardn ilk penceresini Next butonuna basarak dier adma geiniz. 6) Karmza iki seenek gelmitir. From the Internet ve From a local area network seenekleri gelecektir. Biz uygulamamz internete tayacamzdan dolay From the Internet seeneini seerek Next butonuna basalm (ekil 8.6).

ekil 8.6

79 7) Karmza Advanced Provider Settings ksmna geeceimizi bildiren bir ileti gelecektir. Next diyerek bir sonraki aamaya geelim. 8) Daha sonra Roller tanmlamam gerektiini belirten bir seim gelecektir. Enable roles for this Web site seeneini iaretleyip Next dmesine tklayarak devam edelim. 9) Daha sonra karmza Role ismi isteyecektir. Buraya GenelKullanici ve Yonetici adndan iki tane Rol tanmlayalm. Rol ismini yaztktan sonra Add Role butonuna basalm (ekil 8.7).

ekil 8.7 10) Rolleri ekledikten sonra Next dmesini tklayarak devam edelim. Daha sonra karmza admin kullanclar oluturmak iin bir kayt alan gelecektir. Bilgileri girdikten sonra Create User butonuna tklaynz (ekil 8.8) .

ekil 8.8 11) Kullanc oluturduktan sonra karmza kullancnn baarl ekilde olutuunu belirten bir yaz gelecektir (ekil 8.9). Eer baska bir kullanc yaratmak istiyorsanz Contiune butonuna tklaynz. lermimiz bittii iin biz Next dmesine tklayarak ilemimize devam edelim.

80

ekil 8.9 12) Daha sonrasnda karmza Rolleri atayacamz sayfa gelecektir. Burada GenelKullaniciya ye olan kiilerin daha nceden oluturduumuz Admin klasorne girmemesini salayacaz. Bunu iin sol tarafdan Admin klasorn seiniz. Daha sonra Permission ksmndan Deny seeneini seerek Add This Rule butonuna tklaynz. Fakat StandartUye klasrneden Allow diyerek giri izni vermemiz gerekecektir. (ekil 8.10).

ekil 8.10 13) Rule tanmlamalarmz yaptktan sonra Next dmesine basarak ilermimize devam edelim. Bu ilemden sonra yetkilendirme ilemlerimiz bitmitir. Finish dmesine tklayarak ilemimizi bitirelim. 14) imdi ak olan visual studio .net ortamna gelelim. Buraya login nesnemizi web sayfamza ekleyelim (ekil 8.11).

ekil 8.11

81 15) Hibir kod yazmadan sayfamz altralm. Biraz nce kullanc oluturmada kullandmz bilgilerden kullanc ad ve ifresini girip Log In butonuna basalm. Eer kullanc bilgilerini yanl yazarsanz bilgilerinizin yanl olduuna dair bir ileti alacaksnz. Login nesnesinin zellikleri ise...

zellik Ad FailureText LoginButtonText LoginButtonType Orientation PasswordLabelText RememberMeText ToolTip UserNameLabelText TitleText DestinationPageUrl CreateUserText CreateUserUrl PasswordRecoveryText PasswordRecoveryUrl

Tanm Giri hatal olduunda kacak olan yaz Login butonun stndeki yaz Giri butonunun tipini belirler Login ekrann yatay veya dikey grnmesini salar Password ifadesinin yazs Remember Me Next Time (Beni hatrla) yazs ToolTip yazs User Name ifadesinin yazs Balktaki yaz Bilgiler doru ise ynlenmesi gereken web sayfas ye olmak isteyenlerin ekran grecei yaz yel olmak isteyenlerin yazy tkladklarnda alacak sayfa ifremi unuttum yazs ifremi unuttum yazsn tklaynca alacak safya

ASP.NET Configuration ksmnda kullanc, rol veya rullar olutururken Sql Server hatalar alma durumunuz olabilir. Bunun nedenlerinden bazlar, Framework de sorum olmas veya ak olan Configuration sayfasnn fazla sre ak kalmasndan dolay zaman amna uram olabilir. Bundan farkl olarak da Asp.Net user yetki hatas verebilir. Bunuda Commanda satrna gelerek (cmd.exe) C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ aspnet_regiis i Komutunu altrmanz gerekecektir. UYGULAMA 2 1) Yeni bir web sayfas aalm. Asp.Net Configuration ayarlamalarn yapalm. Klasr ve dosya dzenlemenizi yapnz (ekil 8.12).

ekil 8.12 2) Rootdaki Default.aspx dosyamzda Login nesnesini yerletirelim (ekil 8.13).

82

ekil 8.13 3) Login nesnesinin properties penceresinden DestinationPageUrl zelliine Giris.aspx dosyasn

ataynz (ekil 8.14).

ekil 8.14
4) Default.aspx dosyamz altralm. Asp.Net configuration ksmnda girdiimiz kullanc ad ve

ifresini kullanarak giri yapalm. Girdiimiz bilgiler doru ise Giris.aspx sayfamza ynlendirilecektir (ekil 8.15). Aksi taktirde hata mesaj verecektir.

ekil 8.15
5) Tekrardan imdi projemizde bulunan Login penceremizin bulunduu Default.aspx sayfamza

gelelim. CreateUserText zelliine Yeni Kullanc yazsn yazalm, CreateUserUrl blmne ise YeniKayit.aspx dosyamz ynlendirelim (ekil 8.16).

83

ekil 8.16
6) Properties penceresinden PasswordRecoveryText zelliine ifremi Unuttum yazsn,

PasswordRecoveryUrl ksmna ise SifremiUnuttum.aspx dosyamz atayalm (ekil 8.17).

ekil 8.17 7) YeniKayit.aspx dosyamz aalm. Design alann aalm ve CreateUserWizard nesnemizi ekleyelim (ekil 8.18).

ekil 8.18
8) CreateUserWizard seeneini sayfamza eklediimizde kayt iin gerekli bir form gelecektir. Bu

formu properties penceresinden deerlerimizi trkeletirebiliz (ekil 8.19).

ekil 8.19

84 9) YeniKayit.aspx dosyamz altralm. Formdaki gerekli bilgilerimizi girdikten sonra Kullanc Olutur butonumuzu tklayalm. Bilgilerimizi doru girdikten sonra kullanc oluacaktr (ekil 8.20).

ekil 8.20 10) Continue butonuna bastmza gndermemiz gereken bir sayfa var ise properties penceresinden ContinueDestinationPageUrl zelliine dosyanz atamanz yeterlidir (ekil 8.21).

ekil 8.21 11) Bylece artk default.aspx sayfamzdan yeni kayt olduumuz kullanclar giri yapabilirler. 12) imdi ise SifremiUnuttum.aspx dosyamzn design ksmna geelim. Alan web sayfamza Login blmden PasswordRecovery nesnemizi yerletirelim (ekil 8.22).

ekil 8.22 13) PasswordRecovery nesnemizi properties penceresinden yine stndeki yazlarmz deitirebiliriz (ekil 8.23).

ekil 8.23

85 14) Kullanc admz girdikten sonra Dorula butonumuzu tkladmzda Gvenlik Soru gelecektir. Bu soruyuda dou cevaplamanz gerekmektedir (ekil 8.24).

ekil 8.24 15) Bundan sonrasnda localde deniyorsanz SMTP hatas alacaksnzdr. Bu hatay grmeden nce kimden mail gideceine dair bir ka ayar yapmanz gerekmektedir. PasswordRecovery nesnesinin zelliine geldiimizde MailDefinition ksmnda From seeneine kimden mail gidecekse onun mail adresi yazlmas gerekiyor (8.25).

ekil 8.25 16) SMTP hatasn amak iin bu kadar yeterli deil. Tabikide sisteminizde SMTPServer yapsn kurulu olmas gerekmektedir. Bu ayarlamadan sonra Kiiye ifre Hatrlatma balnda From ksmndaki mail zerinden kiiye sifresi gonderilecektir.

86

87 STATE MANAGEMENT Web sayfalarnda en ok kullanlan yntemlerden biriside bir bilginin sayfalar arasn gei yapmasdr. Bunun en iyi rnei ye girii yaptmz web sitesinde dolaabilmemizdir. Asp.Net teknolojisi sayfalar arasnda kullanc bilgilerini tutmay (state) salar. Bu tarz uygulamalar windows uygulamalarda rahatlkla yaplrken, her isteimizi srekli olarak servera post edilmesinden dolay Asp.Net uygulamalarndan biraz farkldr. State management yok ise gnderilen bilgileri dier sayfalar alglayamayacaktr (ekil 9.1).

ekil 9.1 Fakat state management var ise kullanc web sitemizi gezdike tanyacaktr (ekil 9.2).

ekil 9.2 Kullanc bilgilerini saklamak ve kullanmak istiyorsanz kullanabileceiniz yntemler vardr. 1) View State 2) Session State 3) Application State View State kontrol kendisine verilen bilgiyi gizli bir alanda tutar.Bu bilgi hafzaya Base64 formatnda bir karakter dizisi olarak yazlr ve her geri postalamada(postback) sunucuya getirilir ancak viewstate zellii sunucu kontrolleriyle snrldr.Yklenen bilgi ya sizin tarafnzdan oluturlan bir custom object veya basit bir bilgi tr olmak zorundadr. Session State kontrol HttpSessionState snfn kullanr. Kullanclarn bilgilerini ieren kod bilgileri, 120 bitlik Session IDde tutulur. Bilgileri tespit etmek iin Session ID yardm ile olur. Application State web uygulamas iindeki trm sayfalar iin global bir sistemdir. Ziyareti saysn tutulmas Application zerinden kullanlr.

88 SESSION STATE Bir bilgimiz kontrol ederek o bilgiler dorultusunda deerleri aktarmakda diyebiliriz. Session statei uygulamalar ile daha net anlayacaz. UYGULAMA 1 1) Bir web sayfas aalm birer adet textbox, listbox ve iki adette buton yerletirelim (ekil 9.3).

ekil 9.3 2) Aadaki kodu yazarak altralm. altrma durumunda textboxa bir deer yazn ve Session Yaz butonuna tklaynz. Daha sonra Session Oku butonuna basarak ilemin gerekletiini grebilirsiniz (ekil 9.4).

ekil 9.4 3) Kodumuzu aadaki gibi yazalm


protected void btnSessionYaz_Click(object sender, EventArgs e) { Session["state"] = this.TextBox1.Text; this.ListBox1.Items.Add(""); this.ListBox1.Items.Add("Session Deeri Yenilendi"); this.ListBox1.Items.Add("Session'n yeni deeri :" + Session["state"].ToString()); } protected void btnSessionOku_Click(object sender, EventArgs e) { if (Session["state"] == null) {

89
this.ListBox1.Items.Add(""); this.ListBox1.Items.Add("Session Bo"); this.ListBox1.Items.Add("Bir Deer Giriniz");

} else { this.ListBox1.Items.Add(""); this.ListBox1.Items.Add("Deger" + Session["state"].ToString()); } }

4) Burada deerimiz state adnda session nesnesine aktarlyor. Aktarlan deer internet explorer zerinden tutularak deerin okunmasn salayacaktr. UYGULAMA 2 1) Yeni bir web sayfas aalm. Daha sonra Web Site > Add New Item seeneinden yeni bir web form ekleyelim. Default.aspx sayfamza bir textbox ve bir button ekleyelim. Daha sonra buttonu ift tklayarak kod alanna geelim ve Button1_Click olayna kodumuzu yazalm
protected void Button1_Click1(object sender, EventArgs e) { Session["i"] = this.TextBox1.Text; } Response.Redirect("Default2.aspx");

2) Default2.aspx sayfamza geelim ve bir adet label nesnesi yerletirelim. Form_Load olayna kodumuzu yazalm.
protected void Page_Load(object sender, EventArgs e) { Session["deger"] = Session["i"]; Label1.Text = Session["deger"].ToString(); }

3) Kodumuzu altrdmzda Default.aspxde bulunan textboxa bir deer yazarak buttona bastmzda dier sayfaya aktarlacaktr (ekil 9.5).

ekil 9.5

90 MASTER PAGE Normal web formumuza benzer. Kodlamas ile tamamen aspx sayfalarda yaptmz ilemleri yapabiliriz. Direk altrmak dnda aspx de yaptmz tasarmlarda yapabiliriz. Master pagei anlamak iin syle anlatlabilir. Bir web sayfamz var ve sitemizin solmenu, ust banner gibi sayfann belli kalplar sabittir. Bu sabitleri bir kere tasarlayarak yada kodlayarak tm sayfalarda kullanmamz salayacaktr. Size nerim ncelikte masterpagei tasarlayp daha sonrasnda kodlamaya gemeniz olacaktr. Masterpage oluturmak iin Web Site > Add New Item seeneinden Masterpage eklenebilir (ekil 10.1).

ekil 10.1 Dosyamzn uzants master trndedir. Master pagede duzenleme yaparken sizlere tavsiyem table objelerinin ierisinde almaktr. Bylece sayfada kayma yada biim bozukluu olmayacaktr. Tablolarn ierisine ContentPlaceHolder nesnesi eklememiz gerekmektedir. ncelikle ilemlerin dzgn olmas iin bir tasarm yaplmas gerekmektedir. Masterpage sayfans atmzda design ksmnda bir tane ContentPlaceHolder gelmi olacaktr. Biz baska bir tane eklemek istediimizde ContentPlaceHolder toolbox penresinden tasarm alanna srklemiz yeterli olacaktr (ekil 10.2).

ekil 10.2

91 Tablo oluturduktan sonra ContentPlaceHolderlar tablonun ierisine srklememiz yeterli olacaktr. UYGULAMA 1 1) Bir proje aalm ve projemize Kitap.master adnda bir master.page ekleyelim. 2) MasterPage ierisine tasarm iin gerekli tablo dzeneini oluturunuz (ekil 10.3).

ekil 10.3 3) Masterpagei yaptkdan sonra buna bal sayfalar yapmak iin Solution Explorerda Kitap.Master dosyamz sa tklayal, gelen menden Add Content Page seeneini seelim (ekil 10.4).

ekil 10.4

92 4) Add Content Page seeneini tkladnzda otomatik olarak bir web sayfas oluacaktr. Oluturduumuz web sayfasnn Design ksmna getiimizde Kitap.Master sayfasnn kalbnn geldii greceksiniz (ekil 10.5).

ekil 10.5 5) Sayfamz altrdmzda web sayfas bo gelcektir. Sayfann grntn gelmesi iin aspx de bulunan Contenti tklayarak Default to Masters Content seeneini tklaynz (ekil 10.6).

ekil 10.6 6) Artk masterpage leri kullanarak tm sitemizde bir standart site grnts yapabiliriz.

93 USER CONTROL Aslnda Masterpage kmadan nce kullanlan bir teknik olarak nitelendirebiliriz. User Controller masterpageden biraz farkl alrlar MasterPage de sayfa temas hazrlarken User Controller tek amac yazp sayfaya yerletirmek iin kullanlr. Yine bir sol menu dnelim. Sol meny user control olarak yaptmzda her sayfaya (aspx) tek tek tamamz gerekmektedir. UYGULAMA 1 1) Yeni bir web projesi aalm. Add New Item seeneinden ek olarak 2 sayfa daha ekleyelim. Bylece projemizde Default.aspx, Default2.aspx, Default3.aspx adndan toplam 3 tane sayfamz olacaktr. 2) Bunlara ek olarak Add New Itemdan Web User Control ekleyelim (ekil 10.7).

ekil 10.7 3) Web User Control dosyamzn uzats ascx olarak tanmlanr. Normal web sayfalarn farkl yoktur. Tasarm ve kodlamalar aynen Web User Controldede yaplabilir. Tek farkllk ascx dosyalar tek olarak altrlamamas. Projemize eklemi olduumuz WebUserControl.ascx dosyamz aalm ve ierisine bilgiler girelim (ekil 10.8).

ekil 10.8

94 4) Oluturduumuz Web User Control artk tm sayfalarmzda alabilir. Bunu iin Default.aspx, Default2.aspx, Default3.aspx dosyalarna webusercontrol.ascx dosyasn srkleyiniz (ekil 10.9).

ekil 10.9 5) Artk tm sayfalarmzda menumuzu kullanabiliriz. Web User Controlde yaptmz tm deiikliklerde dier sayfalarda etkilenecektir.

95

96 XML NEDR? XML (Extensible Markup Language) geniletilebilir iaretleme dilidir. XML, elektronik ticaret, elektronik veri deiimi, terdarik zinciri btnletirmesi, veri ynetimi, akllarama makinalar gibi bir ok alanda stratejik bir ara olarak kullanlacak basit ve esnek metin biimi teknolojisidir. XMLin zellikleri veri yaplarn, ieriklerini ve kavramlarnplatform, irket ve dilden bamsz bir yapda temsiline imkan vermektedir. XML uygulamalarmza zel kendi iaretleme dilleri tanmlamamz salayan bir meta dildir. Genel olarak grnts HTML diline benzesede aslnda farkllkrlar fazlasyla mevcuttur. HTML sabit bir bilgiyi aktarrken XML data bilgilerini yorumlayarak bilgilerin gncel olmasn salamaktadr. XMLde ierii kendimiz tanmlayabiliriz. Datasetdeki bilgileri XML dosyasna aktararak verilere ulamada yksek performans iin kullanlr. Datasetdeki bilgileri tablo, stuni, veritipi, constraint ierebilir. Bunun iinde XML Schmema (xsd) kullanlr. UYGULAMA 1 1) Yeni bir web projesi acalm. alma sayfamza iki buton ve bir gridview koyalm (ekil 11.1).

ekil 11.1 2) Daha sonra XML DOSYA YAZ butonunu ift tklayarak kod alanna geelim ve kodumuzu yazalm.
protected void btnXmlYaz_Click(object sender, EventArgs e) { string baglan = "Data Source=selcuk\\sqlexpress;" +"initial Catalog=Ogrenci;integrated security=sspi"; SqlConnection conn = new SqlConnection(baglan); string sorgu = "select * from tblBilgiler"; SqlDataAdapter sadp = new SqlDataAdapter(sorgu,conn); DataSet ds = new DataSet(); sadp.Fill(ds); // XML DOSYA OLUSTUR ds.WriteXml(@"c:\XmlDosya.xml"); Response.Write("Dosya Oluturuldu");

3) Kodumuzu altrp XML DOSYA YAZ butonuna bastmzda C:\ rootda XmlDosya.xml adnda bir dosya olutuunu grebiliriz. Burada XML dosyamza Dataset zerinden ierisindeki bilgiler ds.WriteXML metoduyla aktarlacaktr. 4) Oluturduumuz dosyay ift tklayarak aalm. Karmza internet explorer alr ve aa eklinde Xml dosyamz grnecektir (ekil 11.2).

97

ekil 11.2 5) XML dosyamz oluturduumuza gre tekrardan asp.net ortamna geerek XML DOSYA OKU butonunu ift tklaynz ve kodumuzu yazalm.
protected void btnXmlOku_Click(object sender, EventArgs e) { DataSet verioku = new DataSet(); verioku.ReadXml(@"c:\XmlDosya.xml"); this.GridView1.DataSource = verioku.Tables[0]; this.GridView1.DataBind(); }

6) Buradaki olay ise ReadXml metoduyla rootda bulunan xml dosyamz okuyarak GridViewe aktarmak olacaktr. 7) Kodumuzu altrdkten sonra XML DOSYA OKU butonumuzu tkladmzda datalar gridviewe aktarlacaktr (ekil 11.3).

ekil 11.3

98 UYGULAMA 2 1) Yeni bir web projesi aalm. Projemize Add New Item seeneinden mcpd.xml, mcse.xml adnda iki adet dosya oluturalm (ekil 11.4).

ekil 11.4 2) Default.aspx dosyamza bir adet DropDownList ve GridView ekleyelim). ropDownListi tklayarak properties penceresinden Item zelliini kullanarak icerisine mcse,mcpd deerlerini girelim (ekil 11.5).

ekil 11.5 3) Daha sonra mcse.xml dosyamz .net ortamnda aalm. Mcse.xml dosyamz kolonlarmz yazalm.
<AnaBolum> <tblbilgiler> <ad></ad> <soyad></soyad> <derskodu></derskodu> </tblbilgiler> </AnaBolum>

4) Kolonlarmz tablo eklinde grmek ve ierisine rahat bilgi girii yapmak iin kod alamzda mouseu sa tklaynz. Karmza gelen menden View Data Grid seeneini seiniz (ekil 11.6).

ekil 11.6

99 5) Karmza gelen tabloya bilgilerimizi girelim (ekil 11.7).

ekil 11.7 6) Ayn ilemleri mcpd.xml dosyamz iin gerekletirelim. erisine giredeimiz datalarn farkl olmasna dikkat edin (ekil 11.8).

ekil 11.8 7) Data girilerimiz bittikten sonra default.aspx dosyamza gelerek DropDownList nesnemize ift tklayarak kod alanna geelim.
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { DataSet veri = new DataSet(); string dosya = this.DropDownList1.SelectedItem.ToString(); veri.ReadXml(Server.MapPath(dosya+".xml")); this.GridView1.DataSource = veri.Tables[0]; this.GridView1.DataBind(); }

8) Kodumuzu altralm ve DropDownListden hangi alan seersek o dosya adna bal olarak xml dosyas yklenecektir (ekil 11.9).

ekil 11.9

100 9) Burada Server.Mappath dosyalarmzn ayn yerde olduunu belirlemektedir. Eer Server.Mappath yazlmasayd dosyalarmz C:\Program Files\Microsoft Visual Studio 8\Common7\IDE klasrnde arayacak ve hata verecektir (ekil 11.10).

ekil 11.10 10) Bunun dnda DropDownlistden isim sememize ramen gelmiyor ise DropDownListi seerek AutoPostBack zelliini True yapmanz gerekmektedir.

Eer sayfa yklenince datann GridViewe gelmesini istiyorsak. Form_Load olayna kodumuzu yazabiliriz.

XSD NEDR? XML Schema (XSD), XML dkman ierisindeki elementler sras, says, alt elementleri, veritinin tipi gibi tanmlamalarmz yapacamz standartlar bulunan bir dil olarak tanmlanabilir. XSDyi bir veritaban oluturmak gibi dnebiliriz. Nasl orada veritipi, kstlama gibi ilemler gerekletirebiliyorsak XSDde de bu ilem gerekleir. Dataset kullanarak XSD oluturmak XML oluturmaktan pek farkl yoktur. ds.WriteXmlSchema(@ c:\sayfa.xsd); olarak yazdnzda rootda XSD dosyas oluacaktr (ekil 11.11).

ekil 11.11

101 WEB SERVISLER


Xml Web Servisleri yazlan program kodunu altran bileenlerdir. Sradan bileenlerden fark bu ilevi farkl bilgisayarlara da sunmasdr. XML Web Servislerine farkl bir bilgisayar ve farkl bir platformdan istemci olunabilir. Yani XML Web Servisleri farkl platformalar arasnda ortak olarak kulllanbilen bileenlerdir. XML Web Servisleri ile farkl platformlar arasnda veri aktarmada belli standartlar sayesinden olduka kolaylamaktadr.XML Web Servisleri standart olan protokoller zerinde alr. Bunlar, HTTP, XML, SOAP standartlardr. XML Web Servisleri adndan da anlald gibi mesaj al verii iin XML standardn kullanr. XML in bir standart olmas ve herhangi bir platforma bal olmamas sayesinde XML Web Servisleri farkl platformlarn konumasn, veri al veriini salar. Bu sayede uygulam gelitirme aamasnda programclar farkl sistemleri kullanan uygulamalar yazarken standartlar kullanarak ilerini daha kolay bir ekilde yapabilirler. XML Web Servisleri HTTP protokol zerinden mesaj al veriin yapt iin internet zerinden bir XML Web Servisine eriim yaplabilmektedir. Ek olarak bir intranetde de XML Web Servisi uygulamasu yaplabilir. nemli olan XML Web Servisinin HTTP protokol ile yani bir web sunucusu ile sunuluyor olmasdr. Tabiki .NET Framework zerinde programlanm olan bir XML Web Servisinin sunulabilmesi iin Internet Information Services (IIS) ve .NET Framework gerekmektedir. UYGULAMA 3 1) Bu uygulamamzda ncelikle nasl web servis kuracamz anlatacam. 2) File>New>Web Site seeneini tkladmzda karmza gelen pencereden ASP.NET Web Service seeneini tklayalm. OK butonuna bastkdan sonra Web Servisimize balayalm (ekil 11.12).

ekil 11.12 3) Web servisi ekledikten sonra karmza Service.cs dosyas gelecektir. Burada [WebMethod] ile balayan ksmlar bizi ilgilendiren servis adnn yer ald ksmdr. Atmz projemize kod yazmadan F5 tuuna basarak altralm (ekil 11.13).

102

ekil 11.13 4) Burada HelloWordl linkini tkladmzda karmzda o servisin sayfas gelecektir. Invoke dmesine tkladmzda XML formatnda bilgisi grnecektir.

ekil 11.14 5) Burada farkl bir method yazarak ekranda birden fazla servis ad gorebiliriz (ekil 11.15).

ekil 11.15

103
6) Girmi olduumuz parcalar altrarak deneyebiliriz. Kimlike tkladmzda karmza return deerinde yazan yazmz XML formatnda gelecektir (ekil 11.16).

ekil 11.16 Basit dzeyde bir web servis yazlmn grm olduk. imdi ise girilen parametreye gre deerin gelmesini salayabiliriz. UYGULAMA 2 1) Bir nceki web servis kod alanna geelim ve aadaki kodu ekleyelim (ekil 11.17). [WebMethod] public string Egitmen(string egitim) { if (egitim == "mcse") { return "Mehmet ETMEN"; } else if (egitim == "mcpd") { return "Seluk ZDEMR"; } else { return "Funda KOYUNCU"; } } Hangi deeri girersek ona gre sonu dndrecektir.

104

ekil 11.17 2) Kodumuzu altrdmzda karmza gelen Egitmen adnda web servis ismi greceksiniz. Egitmen linkini tklaynz. Karmza bir text alan gecektir. Bu alana mcpd yazarak Invoke butonuna basnz (ekil 11.18).

ekil 11.18 3) Karmza XML dosyasnda mcpd karl gelecektir (ekil 11.19).

105

ekil 1.19 Text alanmza girdiimiz mcpd deerinin karl olan Seluk ZDEMR deerini dndrecektir. Bu uygulamann sonucunda bu yazdklarmz web sayfas (aspx) dosyasndan nasl okuyabileceimizi grelim. UYGULAMA 4 1) Yeni bir web projesi aalm. Bu projede bir nceki uygulamada yer alan web servisi kullanacanmamz gerekecektir. 2) Alan web projemize Web Site>Add Web Reference seeneini tklayalm (ekil 11.20).

ekil 11.20 3) Karmza Add Web Reference penceresi gelecektir. Burada bulunan URL ksmna bizim bir nceki uygulamada kullandmz asmx uzantl web servisinin yolunu yaznz ve GO butonuna basnz(ekil 11.21). Yalnz burada adresde dikkat edeceiniz husus asmx dosyasn bilgisayarada bulunan yolunu deilde altrdmzda internet explorerda oluan adresi yaznz.

106

ekil 11.21 4) GO simgesini tklatktan sonra web servis ekrana gelecektir. Bu servisi projemize dahil etmek istiyorsak Add Reference dmesine basnz (ekil 11.22).

ekil 11.22 5) Projemize web servisi eklediimi Solution Explorerdan grebiliriz. Burada ismini deitirmediyseniz localhost olarak gemi olacaktr. Localhost adndaki klasrn adn sonradan deitirebilirsiniz. smini Egitim olarak deitirelim (ekil 11.23).

ekil 11.23

107
6) Web safyamza (Default.aspx) bir buton ve textbox nesnesi koyalm (ekil 11.24).

ekil 11.24 7) Deer Getir butonumuzu ift tklayarak kod alanmza geelim. Kod alanmza aadaki kodu yaznz. protected void btnDegerGetir_Click(object sender, EventArgs e) { Egitmen.Service egitmenler = new Egitmen.Service(); Response.Write(egitmenler.Egitmen(this.TextBox1.Text)); } 8) Kodumuzu yazp altrdktan sonra textboxn ierisine mcse deeri yazp butona basalm. Ekrana mcse karl olan Mehmet ETMEN deeri gelecektir (ekil 11.25).

ekil 11.25 Burada service ierisinde bulunan Egitmen (egitmenler.Egitmen) biriminin deerini alabiliyoruz. Web servisimizi veritabanna balayarak ilemlerimiz daha dinamik hale getirebiliriz. Bunun iin bir dviz brosuna ait bir webservis ilemi gerekletirelim. Veritabanmz ekil 11.26da yer almaktadr.

ekil 11.26

108
UYGULAMA 5 1) Yeni bir web servis uygulamas balatalm. 2) Databasee balanmak iin System.Data ve System.Data.SqlClient namespaceleri tanmlayalm (ekil 11.27).

ekil 11.27 3) Kod ksmna yazarak kodumuzu yazalm.

[WebMethod(Description="Dviz Gster")] public DataSet dovizler() { string yol=@"Data Source=Selcuk\sqlExpress;" +"initial Catalog=ogrenci;integrated security=sspi"; SqlConnection conn = new SqlConnection(yol); string sorgu = "select * from tblDoviz"; SqlDataAdapter sadp = new SqlDataAdapter(sorgu,conn); DataSet ds = new DataSet(); sadp.Fill(ds); return ds; } 4) Kodumuzu yaztkdan sonra altrarak test edelim (ekil 11.28).

ekil 11.28

109
5) Bu bilgileri artk web sayfamzdan bu bilgiyi alabiliriz. Bunun iin yeni bir web sayfas balatalm. 6) Web Site > Add Web Reference seeneini tklayarak web servisimizi ekleyelim (ekil 11.29).

ekil 11.29 7) Web sayfamza bir GridView nesnesi ekleyelim. Form_Load olayna kodumuzu yazalm. protected void Page_Load(object sender, EventArgs e) { DovizKur.Service kur = new DovizKur.Service(); DataSet ds = new DataSet(); ds = kur.dovizler(); this.GridView1.DataSource = ds.Tables[0]; this.GridView1.DataBind(); } 8) Kodumuzu yazp altrdktan sonra GridView nesnemize bilgiler gelecektir (ekil 11.30).

ekil 11.30

110
UYGULAMA 6 1) Bu uygulamamzda isteimiz para biriminin sonucunu getirelim. 2) Bunun iin yeni bir web servis projesi balatalm ve web servisin kod alanna yazalm. [WebMethod(Description="Dviz Tr Seerek Getir")] public DataSet dovizsec(string sec) { string yol = @"Data Source=Selcuk\SqlExpress;" + "initial Catalog=Ogrenci;integrated security=sspi"; SqlConnection conn = new SqlConnection(yol); string sorgu = "select * from tbldoviz where para='"+sec+"'"; SqlDataAdapter sadp = new SqlDataAdapter(sorgu,conn); DataSet ds = new DataSet(); sadp.Fill(ds); return ds; } 3) Yeni bir web sayfas aarak Web Servisi referans ediniz (ekil 11.31).

ekil 11.31 4) Web sayfamza bir buton, textbox ve gridview ekleyiniz (ekil 11.32).

ekil 11.32 5) Butonu ift tklayarak kod alanna geelim ve kodumuzu yazalm. protected void Button1_Click(object sender, EventArgs e) { Dovizislemi.Service Kurislem = new Dovizislemi.Service(); DataSet ds = new DataSet(); ds = Kurislem.dovizsec(this.TextBox1.Text); this.GridView1.DataSource=ds.Tables[0]; this.GridView1.DataBind(); }

111
6) Kodumuzu altrdktan sonra textbox alanna Dolar deerini yazarak butona basnz (ekil 11.33).

ekil 11.33 Asmx dosyalarn web servisi hizmeti veren baka bir siteden yolunu yazarakta ulaabilir ve kodlamanz yapabilirsiniz. Eer datalarnz GridViewe deilde textbox nesnesine aktarmak istiyorsanz; this.TextBox1.Text=System.Convert.ToString (DataBinder.Eval(ds,"Tables[0].DefaultView.[0].Ad")); this.DataBind(); kodunu yazmanz yeterlidir. XML DOKUMANLARINI BMLENDRME Xml dosyalarmz baktmzda aa seklinde grntlendiini biliyoruz. XML dosyalarmz biimlendirerek HTML gibi web sayfas gibi grntlenmesini salayacaz. Bunun iin CSS ve XSL kullanabiliriz. CSS LE XML SAYFALARINI BMLENDRME UYGULAMA 7 1) Bir web projesi aalm. Projemize Add New Item seeneini kullanarak satis.xml adnda bir xml dosya ve bicim.css adnda dosyalarmz ekleyelim (11.34).

ekil 11.34 2) Satis.xml dosyamz aalm ve aadaki kodu yazarak dosyamz oluturalm. <?xml version="1.0" encoding="utf-8" ?> <magaza> <satis> <DVD>Doogal Magic Roundabout</DVD> <TURU>Animasyon</TURU> <UCRET>35 YTL</UCRET> </satis> <satis>

112
<DVD>Shallow Hal</DVD> <TURU>Komedi</TURU> <UCRET>40 YTL</UCRET> </satis> <satis> <DVD>Planet Earth </DVD> <TURU>Belgesel</TURU> <UCRET>23 YTL</UCRET> </satis> </magaza> 3) XML kodumuzu yazdktan sonra CSS dosyamzda biimlendirelim satis { } dvd {

display:block; margin:10px;

} turu { } ucret {

display:inline; font-family:"Comic Sans MS"; color:Green;

display:inline; font-size:30px;

display:inline; color:Red; font-size:30px;

Burada yer alan isimlere dikkat ederseniz CSS dosyasnda yer alan deiken isimleri XML taglarnn ayns olmas gerekmektedir. Bylelikle satis kolonunu ayarladmz grnt ve biimleri ayarlanacaktr. 4) Kodumuzu yazdmzda ilk olarak almayacaktr.Nedeni ise CSS dosyamz XML dosyamza tantmamamzdan kaynaklanmaktadr. 5) Bu aamada XML dosyamzn st ksmna kodumuzu yazalm (ekil 11.35). <?xml-stylesheet type= text/css href= bicim.css?>

ekil 11.35 6) Sonu olarak artk XML dosyamzn grnts deiecektir. XML dosyamz altrdmzda Html gibi biimlenmi grnts olacaktr (ekil 11.36).

113

ekil 11.36

XSL LE XML DOSYALARIMIZI BMLENDRME CSS de XML dosyalarmzn grnt, renk gibi ilemleri yaplr. XML biimlendirilmesinde XSL tercih edilmelidir. CSS de yaplamayan sralama, yendiden dzenleme, dngler ve script destei XSLin avatajlar olarak deerlendirebiliriz. XSL dosyasn XML dosyamza armak iin aadaki satr yazmamz yeterlidir. <?xml-stylesheet type= text/xsl href= bizimdosya.xsl?> XSL dosyalarmz temel bir sisteme sahiptir. <xsl:stylesheet xmlns:xsl= http://www.w3.org/TR/WD-xsl> Uygulanacak kalp </xsl:stylesheet> Burada CSS gibi istediimiz gibi elementlere biim uygulamas yaplmaktadr. Eer XML dkmannda Root elementi kastediyorsak. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> ...... </xsl:template> </xsl:stylesheet> Burada Root elementini match="/" satr iletmektedir. Eer tm kaynak bilgileri istiyorsak * iareti kullanmamz yeterli olacaktr. <xsl:template match="*"> ........ </xsl:template> Belli bir elementin altnda bulunan tm alt elementler iin // iareti kullanlr. <xsl:template match="//kitap"> ........ </xsl:template> Belli bir elementin altnda bulunan tm belli bir alt element ve onun altndaki tm dier elementler iin; <xsl:template match="kitap//ad"> ........ </xsl:template> Direkt alt elemente uygulamak iin;

114
<xsl:template match="kitap/ad"> ........ </xsl:template> UYGULAMA 8 Bu uygulamamzda daha nceki uygulamamz zerinde devam edeceiz. XML dosyamzda sralama yapacaz. Projemize Add New Item seeneinden SatisX.xsl adnda bir dosya ekleyelim (ekil 11.37).

ekil 11.37 XSL dosyamz aarak kodumuzu yazalm. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:apply-templates select="//satis" order-by="TURU" /> </xsl:template> <xsl:template match="satis"> <p> <xsl:value-of /> </p> </xsl:template> </xsl:stylesheet> Buradaki olay TURU kolonuna gre A Zye sralama gerekletirilecektir. Trlerine baktmzda sralamann olduunu greceksiniz (ekil 11.38).

ekil 11.38

115

Burada yazarken dikkat etmemiz gerekmektedir. rnein: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/Tr/WD-xsl"> Ksmnda Tr eklinde yazdnda ekranda yazlar gelmeyecektir. Byk kk harf duyumunu dikkat ediniz.
UYGULAMA 9 Bir nceki projemize devam edeceiz. Xmldeger.xml adnda yeni bir XML dosyas oluturalm. <?xml version="1.0" encoding="utf-8"?> <Netsoft> <Egitmenler> <ad>Mehmet</ad> <soyad>ETMEN</soyad> <sehir>Ankara</sehir> <ucret>1500</ucret> <tarih>15/10/2006</tarih> </Egitmenler> <Egitmenler> <ad>Seluk</ad> <soyad>ZDEMR</soyad> <sehir>Istanbul</sehir> <ucret>1450</ucret> <tarih>12/09/2005</tarih> </Egitmenler> <Egitmenler> <ad>Cem</ad> <soyad>BAYRAKTAROLU</soyad> <sehir>Ankara</sehir> <ucret>1550</ucret> <tarih>11/12/2007</tarih> </Egitmenler> <Egitmenler> <ad>Funda</ad> <soyad>KOYUNCU</soyad> <sehir>Ankara</sehir> <ucret>1800</ucret> <tarih>07/03/2007</tarih> </Egitmenler> </Netsoft> Projemize maas.xsl adnda dosyamz oluturalm. Maas.xsl dosyamza aadaki kodumuzu yazarak maaa gre sralayalm. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:apply-templates select="//Egitmenler" order-by="number(ucret)" /> </xsl:template> <xsl:template match="Egitmenler"> <p> <xsl:value-of /> </p> </xsl:template> </xsl:stylesheet> Burada number(maas) ksm yazmamzn amac saysal deer olarak almamz salar.

116
Projemize tablo.xsl dosyas oluturalm. XML dosyamza tablo.xsli ekleyerek kodumuzu altralm. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:apply-templates select="//Egitmenler" order-by="-ad" /> </xsl:template> <xsl:template match="Egitmenler"> <table border="1"> <tr> <td> <xsl:value-of select="ad"/> </td> <td> <xsl:value-of select="soyad"/> </td> <td> <xsl:value-of select="sehir"/> </td> </tr> </table> </xsl:template> </xsl:stylesheet> Sonu olarak bilgilerimiz -ad olarak yazldndan Z-Aya sralanacaktr. Tablo kodlarmzdan dolayda bilgilerimize tablo ierisinde gelecektir (ekil 11.39).

ekil 11.39 UYGULAMA 10 1) Bu uygulamamzda ise zel bir szme uygulayalm. XML dosyamzda maa 1550 olan kiininn bilgilerini getirelim. Bunu iin XSL dosyamz oluturalm. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:apply-templates select="//Egitmenler" order-by="-ad" /> </xsl:template> <xsl:template match="Egitmenler[ucret='1550']"> <table border="1"> <tr>

117
<td> </td> <td> </td> <td> </tr> </table> </xsl:template> </xsl:stylesheet> </td> <xsl:value-of select="ad"/> <xsl:value-of select="soyad"/> <xsl:value-of select="sehir"/>

Burada nemli olan ksm [ucret='1550'] ksmnda ucreti 1550 olan kiinin bilgileri gelecektir (ekil 11.40).

ekil 11.40 XML BILGILERIMIZI HTML SAYFASINDA GSTERMEK UYGULAMA 11 1) Projemize sayfa.htm dosyas ekleyelim. HTML dosyamz aarak kodumuzu yazalm. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <xml id="Egitmen" src="Xmldeger.xml"></xml> <head> <title>Untitled Page</title> </head> <body> <table border=1 DATASRC=#Egitmen> <tr> <td><span DATAFLD="ad"></span></td> <td><span DATAFLD="soyad"></span></td> <td><span DATAFLD="sehir"></span></td> <td><span DATAFLD="ucret"></span></td> </tr> </table> </body> </html> 2) <xml id= Egitmen src= XmlDeger.xml> bizim xmldeger.xml dosyamz html ierisine arabiliyoruz. Table DATASRC ksmnda ise id den gelen deeri alabiliriz. DATAFLD ile de ad,soyad,sehir,ucret ksmlarn ekiyoruz (ekil 11.41).

118

ekil 11.41

Herkese kolay Gelsin.

Seluk ZDEMR MCT

You might also like