Professional Documents
Culture Documents
Biblia Turca PDF
Biblia Turca PDF
ADO.NET
2
ADO.NET
Modl 1: 3
ADO.NET
4
C#.NET ile Windows tabanl, Web tabanl gibi eitli projeler gelitirilebilir. Bu
projeler farkl platformlarda alaca veya farkl amalara ynelik
oluturulaca iin, balang bileenleri farkllk gsterecektir. rnein
Windows tabanl projeler iin Windows formlarnn kullanlmas ve baz
referanslarn eklenmesi gerekir. Visual Studio ortamnn salad ablonlar,
proje dosyalarnn balang kodlarn otomatik olarak yazp gerekli referanslar
ekleyerek gelitiriciye hzl bir balang saar.
Windows Application
Windows tabanl uygulamalar gelitirmek iin kullanlr.
Class Library
Dier projeler iin class ktphaneleri salayan DLL (Dynamic Link Library)
oluturmak iin kullanlr. Bu bileenler projelere Reference olarak eklenerek
tekrar kullanlr.
Windows Control Library
Kullanc tanml Windows kontrolleri oluturmak iin kullanlr. Bu kontroller
Windows uygulamalarnda, birok formda tekrar kullanlmak zere tasarlanr.
Smart Device Application
Mobil cihazlar zerinde uygulama gelitirmek iin kullanlr.
ASP.NET Web Application
IIS (Internet Information Services) zerinde alacak Web uygulamalar
gelitirmek iin kullanlr.
ASP.NET Web Service
ADO.NET
Modl 1: 5
ADO.NET
6
Visual C# .NET ile oluturulan bir projenin almas iin gereken baz dosyalar
vardr. Bu dosyalarn birou, projenin tipine gre farkllk gsterir. Yeni bir proje
aldnda, projeye verilen isim ile bir klasr alr ve proje dosyalar bu klasr
altna yerletirilir.
Solution Dosyalar (.sln, .suo)
Visual C# .NET projeleri bir solution dosyas (.sln) altnda oluturulur.
Solution dosyas farkl projeleri bir arada tutar ve birden fazla projeyi
ierisinde barndrr. Visual Studio ile proje oluturulurken solution dosyas
otomatik olarak eklenir.
Solution User Option (.suo) dosyalar, kullancnn solution ile alrken
yapt ayarlar tutar ve proje tekrar ald zaman bu ayarlar getirir.
Project Dosyalar (.csproj, .csproj.user)
Bir projenin iinde bulunan bileenlerin, eklenen referanslarn tutulduu proje
dosyasdr. Visual C# projeleri .csproj uzantl dosya ile oluturulur. Bu dosya
ayn zamanda, bir solution iinde farkl dilde ve tipteki projeleri ayrt etmek
iin kullanlr. Projeye zg ayarlar ise .csproj.user dosyasnda tutulur.
Yerel Proje Dosyalar (.cs)
Form, class gibi bileenlerin tutulduu dosyalardr. Bir .cs uzantl dosya
iinde birden class tutulabilir. Ancak projedeki her form iin ayr bir .cs dosyas
oluturulur.
Web Projeleri Dosyalar (.aspx, .asmx, .asax)
Web uygulamalarnda oluturulan dosyalar Web sunucusunda (ISS) tutulur. Bu
dosyalar web formlar iin .aspx, Web Service iin .asmx, global snf iin .asax
uzantsna sahiptir.
ADO.NET
Modl 1: 7
Assembly Nedir?
Visual Studio .Net ierisinde gelitirilen bir projeye, farkl kiiler tarafndan
gelitirilmi assemblyler eklenebilir. zellikle gelimi projelerde assemblyler
ayr programclar tarafndan yazlarak ortak bir proje altnda toplanabilir.
ADO.NET
8
ADO.NET
Modl 1: 9
ADO.NET
10
ADO.NET
Modl 1: 11
namespace Isimalani_ismi
{
...
}
namespace NSBilgeAdam
{
class Egitim
{
//...
}
class Ogrenci
{
//
}
// vs...
}
BilgeAdam isim alan iindeki Ogrenci snfn kullanmak iin, snf ismini, isim
alan ile birlikte belirtilmelidir.
ADO.NET
12
bilgeadam.NSbilgeadam.Ogrenci yeniogrenci;
yeniogrenci = new bilgeadam.NSbilgeadam.Ogrenci() ;
UYARI: Proje ile ayn isimdeki bir isim alan .NET derleyicisi tarafndan yeni oluturulan
tm projelere eklenir. Bu genel isim alanna kk isim alan (root namespace) denir.
Dolaysyla kendi oluturulan isim alanlarn, kk isim alann ile birlikte belirtilmelidir.
Herhangi bir isim alan ierisinde birden fazla isim alan tanmlanabilir. rnekte
NSBilgeAdam isim alan ierisinde Idari, Egitim ve Ogrenci adnda ayr
isim alan eklenmitir.
namespace NSBilgeAdam
{
// BilgeAdam isim alannda kullanlacak
// Class, Module ve Interfaceler tanmlanr
namespace Idari
{
class Personel
{
}
}
namespace Egitim
{
class Grup
{
}
}
namespace Ogrenci
{
class Bilgi
{
}
}
// vs...
}
ADO.NET
Modl 1: 13
Bir isim alan ierisinde yer alan snflar tanmlamak iin, snfn bulunduu
ktphanenin yolunu eksiksiz olarak belirtmek gerekir. Ancak bu ekilde
kullanmlar, kodun okunmasn olduka zorlatrr. rnekte snflar bu yntemle
tanmlanmtr.
bilgeadam.NSbilgeadam.Idari.Personel kisi1;
kisi1 = new bilgeadam.NSbilgeadam.Idari.Personel();
bilgeadam.NSbilgeadam.Ogrenci.Bilgi Ogrencibilgi;
ogrencibilgi = new bilgeadam.NSbilgeadam.Ogrenci.Bilgi();
Her snf iin ktphane yolunun tekrarn ortadan kaldrmak iin, using
anahtar szc kullanlr. using szc ile eklenen isim alanlarnn
nesnelerine, proje ierisinden dorudan eriilebilir.
using bilgeadam.Nsbilgeadam;
NSBilgeAdam isim alannda bulunan bir snf kullanmak iin sadece ismini
yazmak yeterli olacaktr.
ADO.NET
14
ADO.NET
Modl 1: 15
ADO.NET
16
ADO.NET
Modl 1: 17
ekilde listelenir. Koyu renkle gsterilen proje, solution iinde ilk altrlacak
projedir.
Bu panel ile solution iine proje ekleme silme, projelere yeni nesne ekleme
silme ilemleri gerekletirilir.
ADO.NET
18
Objects paneli ierisinden seilen herhangi bir isim alan geniletilirse, iindeki
tm eler hiyerarik ekilde listelenir. Bu elerin herhangi biri seildiinde, o
eye ait tm alt eler Members penceresinde listelenir.
Yeni bir veri salayc oluturmak iin belirtilen admlar takip edin.
ADO.NET
Modl 1: 19
Visual Studio .NET, ierisinde ok fazla konuyu barndrd iin tmne hakim
olmak neredeyse imknszdr. Bu nedenle yazlm gelitiricilerin iini
kolaylatrmak iin, Visual Studio .NET ierisinde dinamik yardm ktphanesi
oluturulmutur. Dinamik yardm, uygulama gelitirirken yazlan koda gre tm
yardm konularn listeler.
PUCU: Dinamik yardm aktif hale getirmek iin, Help mensnden Dynamic Help
komutunu tklayn.
ADO.NET
20
Grev Listesi, aktif proje ierisine grev eklemek iin kullanlr. Bu grevler
uygulama geliiminin takip edilmesini salar. Grev Listesi iersine eklenen
tm grevleri nem srasna gre sralanabilir.
Grev Listesi aracn proje ortamnda aktif hale getirmek iin View mensnn
Other Windows alt mensnden Task List komutunu tklayn.
Grev Listesi arac zerinde Click here to add a new task alan
tklanarak yeni grev eklenebilir. Biten grevin nndeki onay kutusu
tklanarak, grev sonlandrlabilir.
ADO.NET
Modl 1: 21
ADO.NET
22
BreakPoint
stenen bir kod satrna BreakPoint koymak iin, kod sayfasnn sol tarafnda
bulunan panele tklanr ya da F9 tuuna baslr.
ADO.NET
Modl 1: 23
almann, artn belli bir say kadar saland zaman durdurulmas iin,
BreakPoint Properties penceresinde Hit Count dmesine baslr.
BreakPoint Hit Count penceresinde, artn gerekleme says girilir.
rnekte, BreakPoint be defa veya daha fazla ulald zaman durulmas
belirtilir.
Debug Panelleri
ADO.NET
24
almakta olan satrla, bir nceki ve bir sonraki arasnda kalan deikenleri
listeler.
Locals
allan kapsam iindeki tm deikenleri listeler. Bu kapsam bir modl,
yordam veya dng olabilir.
Watch
Deeri incelenmek istenen deiken veya zellikler, bu panele yazlarak
eklenir.
1. Step Into
altrlan kod eer bir yordam veya fonksiyon ise bu yordam veya
fonksiyonun iine girilir ve hata ayklamaya devam edilir.
2. Step Over
Bir yordam veya fonksiyon iine girilmeden ilerlenir.
3. Step Out
Bir yordam veya fonksiyon iinde ilerleniyorsa, buradan klarak yordam veya
fonksiyonun arld yere dnlr.
4. Continue
Bir sonraki BreakPoint satrna gidilir. Eer baka bir BreakPoint
konmamsa, uygulama normal almasna devam eder.
ADO.NET
Modl 1: 25
?sayi
40
sayi = 50
?sayi
50
Command
Bu modda, Visual Studio ortamnda tanml veya kullanc tanml
makrolar, men eleri kullanlabilir. Command moduna gemek iin >cmd
komutu kullanlmaldr.
>cmd
>Debug.StepOver
>Help.About
ADO.NET
26
ADO.NET
Modl 1: 27
NOT: C# .NET ile uygulama gelitirirken yaplan sz dizimi hatalar hemenTask List
paneline yansr. Buna Background Compiling denir.
ADO.NET
28
Modl zeti
1.
Assembly nedir?
2. sim Alan nedir?
3. Object Browser niin kullanlr?
4. Server Explorer ne ie yarar?
5. alma zaman hatalarn yakalamak iin neler yaplr?
6. Proje nasl derlenir?
ADO.NET
Modl 1: 29
Uygulama1
ADO.NET
30
Uygulama 2
Uygulama 3
Kodlarn yazlmas
1. Form1 nesnesinin kod sayfasna gein ve OleDbConnection
oluturan bir fonksiyon yazn.
ADO.NET
Modl 1: 31
2. Formun zerine ift tklayarak Load olayna gelin. Load olaynda, veri
tabanna balant aan kodlar yazn. Bu veri taban
C:\Proje\CagriMerkezi klasr altnda bulunacaktr.
con =
ConnectionOlustur(@"data
source=C:\Proje\CagriMerkezi\CagriMerkezi.mdb;Provider=Micro
soft.Jet.OleDB.4.0");
con.Open();
con.Close();
Hata ayklama
1. Formun Load metoduna bir BreakPoint yerletirin.
2. Projeyi F5 ile altrn. Balang formu yklendii zaman Load olay
alaca iin, alma belirtilen noktada durur.
3. Debug mensnden Step Into komutunu seerek ya da F11 tuuna
basarak kod iersinde ilerleyin. ConnectionOlustur isimli metodun
iine girildii grlr.
4. ConnectionOlustur metodundan kldktan sonra, Locals panelini
an ve con isimli deikeni inceleyin.
5. Command panelini an ve immed komutunu yazarak, Immediate
moduna gein.
6. Command paneline con.State yazarak Connection nesnesinin State
zelliini renin.
7. Debug mensnden Continue komutunu vererek ya da F5 tuuna
basarak almann ilerlemesini salayn.
8. Formu kapatarak uygulamay sonlandrn.
9. con.Open() kodunun bulunduu satra BreakPoint koyun ve sa
tklayarak BreakPoint Properties komutunu verin.
10. Condition dmesine tkayn ve metin kutusuna con.State = 1
yazn. con nesnesinin State zellii 1 (balant ak) olduu zaman
almann durmas ayarlanr.
ADO.NET
32
ADO.NET
Modul 1:
ADO.NET
34
ADO.NET
Modul 2: 35
ADO.NET
36
Veri Depolama
Gnmzde verileri saklamak iin eitli teknikler kullanlr. rnein bir emlak
emlak alm, satm bilgilerini dosya ktlar zerinde depolayabilir. Bu yntem
veri arama ve listeleme ilemlerinin karmak hale gelmesine ve arama
ADO.NET
Modul 2: 37
ADO.NET
38
Avantajlar:
En gvenli veri ortamdr.
Veri kaynana yaplan e zamanl eriimlerde, veri kaynann
kontroln kolaylatrr.
Dezavantajlar:
Uygulama ile veri kayna arasnda gerekleen balanty
koruyabilmek iin sabit bir a balantsnn olmas gerekir.
Uygulama ile veri kayna arasndaki balant a zerinden
gerekletii iin, a trafiinin younluunu artrr.
rnein araba reten bir fabrikada yaplan retim bilgilerinin dier birimlere
ulatrlmas ve bu kaytlarn depolanmas iin ezamanl bir balant kurulmas
gereklidir. Ya da bir emlak firmasnda emlaknn, mlk ve menkul bilgilerini
gncel tutabilmesi iin sabit bir balant kurmas gereklidir.
ADO.NET
Modul 2: 39
Avantajlar:
Laptop, Notebook ve Pocket PC gibi aralarla girilen veriler, istenilen
zamanda veri ortamlarna aktarlabilir.
evrimd ortamlar sayesinde, verilerin depoland uygulama
zerindeki yk hafifletilir. Bu durum performans artn salar.
Dezavantajlar:
Balantsz veri ortamlarnda, verilerin gncel kalmasna dikkat
edilmelidir. Bu ortamlarda veri gncelleme ilemleri farkl zamanlarda
ADO.NET
40
ADO.NET
Modul 2: 41
ADO.NET
42
Veri merkezli uygulamalar gelitirmek iin veri eriim modelleri kullanlr. Bir veri
eriim modelinde ki mantksal her birime katman (tier) denir. Veri merkezli bir
uygulamada katman says makine saysna bal deildir. Katman saysn
veri eriim modelindeki dzeyler belirler.
stemci Katman (Client tier): Sunum ya da kullanc servis katman
olarak da bilinir. . Bu katman kullanc ara yzn iermektedir.
Katman (Business tier): Bu katman, uygulamann veri kayna ile
etkileen blmdr.
Veri Katman (Data tier): Veriyi ieren katmandr.
Birlikte alabilirlik Katman (Interoperability tier): Platform ve
dilden bamsz, her tr veriye etkileim salayan katmandr. Bu
katmana herhangi bir iletim sistemi zerinde bulundurulabilen XML
Web Servislerini rnek verebiliriz.
ADO.NET
Modul 2: 43
ADO.NET
44
Konu 2: ADO.NETe GR
ADO.NET Nedir?
ADO (ActiveX Data Objects), farkl veri kaynaklarna hzl ve gvenli eriim
iin Microsoft tarafndan gelitirilen nesne modelidir. ADO.NET ise ADO
teknolojisinin en yeni versiyonudur. ADO ile ayn programlama modelini
ADO.NET
Modul 2: 45
DKKAT: Hangi veri kayna kullanlacaksa, sadece ona uygun veri salayc snf
kullanlmaldr.
ADO.NET
Modul 2: 47
NET Framework 1.0 srm ile birlikte SQL Server .NET ve OLE DB .NET veri
salayc snflar gelmitir.
SQL Server .NET: SQL Server 7.0 ve SQL Server 2000 veritabanlarna hzl
balant salar. SQL Server balant nesneleri System.Data.SqlClient isim
alannda bulunur.
OLE DB .NET: SQL Server 6.5 ve daha ncesi srmlerine, Oracle, Sybase,
DB2/400 ve Microsoft Access veri tabanlarna balant kurmay salar. OLE
DB balant nesneleri System.Data.OleDb isim alannda bulunur.
NET Framework 1.1 srm ile birlikte SQL Server .NET ve OLE DB .NET veri
salayclarna Oracle .NET ve ODBC .NET veri salayclar da eklenmitir.
ADO.NET
48
NOT: Xxx yerine seilen veri salaycsna gre SQL, OLEDB, Oracle ve ODBC
eklerinden biri kullanlr.
Modl zeti
ADO.NET
50
Uygulama 1
ADO.NET
Modul 2: 51
ADO.NET
Modul 4:
ADO.NET
Modul 3 53
Bu modln sonunda:
ADO.NET
54
ADO.NET
Modul 3 55
ADO.NET
56
Microsoft .NET Framework, veritabanlar ile balant kurmak iin farkl veri
salayclarn destekler.
SQL Server .NET
OLEDB .NET
ODBC .NET
ADO.NET
Modul 3 57
ODBC .NET veri salayclar, dier veri salayclarndan farkl olarak, veri
kaynana balanrken hibir ara katman kullanmaz. Bunun yerine, balant
iin ODBC APIleri kullanr.
ADO.NET
58
Snf Aklama
ADO.NET
Modul 3 59
ADO.NET
60
ADO.NET
Modul 3 61
Parametre Tanm
Tr Aklama
ADO.NET
62
System.Data.SqlClient.SqlConnection cnNorthwind;
cnNorthwind = new System.Data.SqlClient.SqlConnection();
System.Data.OleDb.OleDbConnection cnNorthwind;
cnNorthwind = new System.Data.OleDb.OleDbConnection();
ADO.NET
Modul 3 63
cnNorthwind.ConnectionString=@"Provider=Microsoft.Jet.OLEDB.
4.0;Data Source=C:\Samples\Northwind.mdb";
rnekte Sql Server 6.5 veri taban iin balant cmlesi oluturulmutur. SQL
Server 7.0 srmnden eski bir veritaban sunucuna balant yapld iin
Provider zellii SQLOLEDB olarak belirtiliyor. ProdServ isimli sunucudaki
Pubs veritabanna, Windows hesab (SSPI) ile balanlyor.
System.Data.OleDb.OleDbConnection cnNorthwind;
cnNorthwind = new System.Data.OleDb.OleDbConnection();
cnNorthwind.ConnectionString = Provider=SQLOLEDB;Data
Source=ProdServ;Initial Catalog=Pubs;Integrated
security=SSPI;
DKKAT: Microsoft Access veri kayna, tek veri tabanndan oluur. SQL Server veri
kayna ise birden fazla veri tabanndan oluur. Bu yzden SQL Server veritaban balant
cmlesinde Initial Catalog parametresi kullanlr.
ADO.NET
64
Tablo 2.3 de OLEDB ile Accesse balanmak iin gerekli, rnek Balant
Cmleleri gsterilmektedir.
ADO.NET
Modul 3 65
Tablo 2.4 de ODBC ile SQL Servera balanmak iin gerekli, rnek Balant
Cmleleri gsterilmektedir.
ADO.NET
66
Tablo 2.5 de OLEDB ile SQL Servera balanmak iin gerekli, rnek Balant
Cmleleri gsterilmektedir.
ADO.NET
Modul 3 67
Tablo 2.6 de SQLClient ile SQL Servera balanmak iin gerekli, rnek
Balant Cmleleri gsterilmektedir.
ADO.NET
68
ADO.NET
Modul 3 69
Close
Open metodu, balant cmlesinde belirtilen veri kaynan amak iin kullanlr.
Close metodu, alan balanty kapatmak iin kullanlr. Close metodu ile
kullanlmayan balantlar kapatmak, kaynak tketimini azaltr.
cnNorthwind.ConnectionString = @"Provider=Microsoft.Jet.
OLEDB.4.0;Data Source=C:\Samples\Northwind.mdb";
//Balanty amak
cnNorthwind.Open();
Open metodu ile veri kayna alrken, eitli alma zaman hatalarndan
dolay balant almayabilir ve uygulama hata retebilir. Bu alma zaman
hatalar
Sunucunun bulunamamasndan,
Veritabannn bulunamamasndan,
Hatal kullanc ad veya parola girilmesinden,
Donanm veya yazlmdan kaynaklanabilir.
ADO.NET
Modul 3 71
Catch bloklar, uygulamann rettii hatalar, tiplerine gre sral bir ekilde
iler. Bu blok iersine, yakalanan hataya gre yaplacak ilemler yazlmaldr.
rnein balantnn almad bir durumda veritaban ilemleri
gerekletirilmeye alld zaman, kullancya balantnn almasn bildiren
mesaj kutusu karlabilir.
Finally blounda, Try ve Catch bloklarndan herhangi biri ilendikten sonra
alr. Bu blokta, hatann retildii veya retilmedii iki durumda da yaplmas
gereken ilemler yazlr. rnein, balantnn kapatlmas her iki durumda da
yaplmas gereken bir ilemdir.
System.Data.OleDb.OleDbConnection cnNorthwind;
try
{
cnNorthwind = new System.Data.OleDb.OleDbConnection();
cnNorthwind.ConnectionString = @"Provider=Microsoft.Jet.
OLEDB.4.0;Data Source=C:\Samples\Northwind.mdb";
cnNorthwind.Open();
// Veritaban ilemleri gerekletirilir.
}
catch (InvalidOperationException XcpInvOp)
{
// lk nce bu tipte hata yakalanr.
MessageBox.Show("nce veri taban balantsn kapatn");
//Hata Mesajnn ieriini grmek iin kullanlr.
MessageBox.Show(XcpInvOp.ToString());
}
catch (Exception Xcp)
{
//Dier hatadan farkl bir tipte hata burda yakalanr.
MessageBox.Show(Xcp.ToString());
}
finally
{
cnNorthwind.Close();
//ya da
cnNorthwind.Dispose();
}
ADO.NET
72
Balant snfnn durumu hakknda bilgi almak iin, balant snfnn State
zellii kullanlr.
ADO.NET
Modul 3 73
Property Aklama
ADO.NET
74
Modl zeti:
ADO.NET
Modul 3 75
Kontrollerin eklenmesi
VeriTabaniBaglantisi isminde yeni bir Windows projesi an.
Kodlarn yazlmas
Veritaban balants oluturmak iin ncelikle balant cmlesi oluturulmas
gerekir. Bu balant cmlesi, kullancnn girecei bilgilere gre oluturulur.
ADO.NET
Modul 3 77
case 1:
Provider = "";
EnableTextBoxes(true);
break;
case 2:
Provider = "SQLOLEDB";
EnableTextBoxes(true);
break;
}
}
if (Provider != "")
{
ConnectionString = "Provider=" + Provider + ";";
}
lblConnectionString.Text = ConnectionString;
}
ADO.NET
Modul 3 79
ADO.NET
Modul 5:
Bu modln sonunda:
Balantl veri ortamlaryla almay renecek,
Command oluturabilecek,
Command ile geriye tek deer veya kayt kmesi dndrebilecek,
Command ile INSERT, UPDATE ve DELETE sorgularn
altrabilecek,
82 Modl 4: Connected Veritaban lemleri
Snf Aklama
Commmand Nedir?
Tablo 4.2 de hangi veri salayc iin hangi Command Nesnesinin kullanld
gsterilmektedir.
Tablo 4.2.
Nesne Veri Salayclar
Command
Nesneler System.Data.SqlClient.SqlCommand SQL Server .NET Veri Salaycs
Name: Command nesnesinin kod ierisindeki ismidir. Bu isim
Command nesnesine bavurmak iin kullanlr.
Connection: Command nesnesinin hangi Connection zerinde
alacan belirler.
CommandType: altrlacak komutun trn belirtir. Text, Stored
Procedure ve TableDirect olmak zere deeri vardr.
TableDirect SQL Server tarafndan desteklenmez.
CommandText: Stored Procedure adn veya Sorgu cmlesini tutar.
86 Modl 4: Connected Veritaban lemleri
Command Oluturmak
zellik Aklama
Parametre Kullanmak
Command nesnesi altrlmadan nce, komuttaki her giri parametresi iin bir
deer girilmelidir. Ayrca Command nesnesi altrldktan sonra, sonu
parametrelerinin deerleri geriye dndrlebilir.
Property Aklama
Enumeratr zellik
ExecuteScalar metodu ile geriye deer dndrmek iin, sadece Sum veya
Count gibi fonksiyonlar kullanlmaz. Ayn zamanda Select cmlesi veya Stored
Konu: 4 93
cnAlisveris.Open();
int adet = Convert.ToInt32(cmUrun.ExecuteScalar());
cnAlisveris.Close();
Metot Aklama
gibi alnabilir.
Read DataReader nesnesinde okunacak kayt olduu
srece okuma yapar. Kayt varsa True, yoksa
False deeri geri dndrr.
Tablo 4.7 DataReader Metodlar
zellik Aklama
rdrUrun =
cmUrun.ExecuteReader(CommandBehavior.CloseConnection);
while (rdrUrun.Read())
{
listBox1.Items.Add(rdrUrun.GetString(0)+" - "+
rdrUrun.GetInt16(1));
}
rdrUrun.Close();
98 Modl 4: Connected Veritaban lemleri
SQL Veri leme Dili; veri girmek, deitirmek, silmek ve verileri almak iin
kullanlr. En sk kullanlan DML komutlar ve kullanm amalar Tablo 4.9
gsterilmitir.
DML Komutu Aklama
cmUrunTabloOlustur.CommandType = CommandType.Text;
try
{
connAlisveris.Open();
int kayitSayisi;
kayitSayisi=cmUrunTabloOlustur.ExecuteNonQuery();
connAlisveris.Close();
MessageBox.Show(kayitSayisi+" "+"kayt eklendi.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
ExecuteNonQuery metodu ile INSERT, UPDATE ve DELETE sorgular
altrlabilir.
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
rnekte ExecuteNonQuery metodu altrlarak, rn tablosundan kayt
silinmitir.
System.Data.SqlClient.SqlCommand cmd = new
System.Data.SqlClient.SqlCommand("Delete Urun Where"+
"UrunID= @UrunID", connAlisveris);
cmd.Parameters.Add("@UrunID", 1);
try
{
connAlisveris.Open();
int kayitSayisi=cmd.ExecuteNonQuery();
connAlisveris.Close();
MessageBox.Show(kayitSayisi+" kayt silindi.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
Modl zeti
Veritabannn oluturulmas
Bu uygulamada kullanlacak Personel tablosu iin bir veritaban oluturulmas
gerekir.
1. Microsoft Access ile kisi isminde bir veritaban oluturun.
2. Veritabanna Personel isminde bir tablo ekleyin ve tabloda belirtilen
kolonlar ekleyin.
Konu: 4 103
Alan Ad Veri Tr
Numara AutoNumber
Ad Text
Soyad Text
DogumTarihi Date/Time
Adres Text
Sehir Text
Kontrollerin eklenmesi
Personel isminde yeni bir Windows projesi an.
Kodlarn yazlmas
Personel tablosu zerinde ilem yaplmas iin veritabanna balant almas
gerekir. Bu balant iin gereken Connection String ifadesinin merkezi bir
yerden alnmas, deiiklik durumunda kolaylk salayacaktr.
ExecuteNonQuery metodu
2. Veritabanna yeni bir Personel kayd eklemek iin gereken kodlar bir
yordam altnda yazn.
public void Kaydet()
{
finally
{
conn.Close();
}
}
ExecuteReader ve DataReader
4. ComboBox kontrolne personel numaralarn dolduran kodlar yazn. Bu
ComboBox, personel kaytlarn numaraya gre semek iin kullanlacaktr.
try
{
conn.Open();
dr = comm.ExecuteReader();
106 Modl 4: Connected Veritaban lemleri
while(dr.Read())
{
cbNo.Items.Add(dr.GetInt32(0));
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
dr.Close();
conn.Close();
}
}
5. ComboBox kontrolnden seilen personel numarasna gre formdaki
kontrollerin doldurulmasn salayan kodlar yazn.
public void IDyeGoreFormDoldur(int ID)
{
System.Data.OleDb.OleDbConnection conn = new
System.Data.OleDb.OleDbConnection();
conn.ConnectionString = Module1.connStr;
System.Data.OleDb.OleDbCommand comm = new
System.Data.OleDb.OleDbCommand();
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = "Select Ad,Soyad,Adres, Sehir, "+
"DogumTarihi from Personel Where Numara=@No";
comm.Parameters.Add("@No", ID);
System.Data.OleDb.OleDbDataReader dr;
try
{
conn.Open();
dr = comm.ExecuteReader();
if(dr.Read())
{
txtAd.Text = dr.GetString(0);
txtSoyad.Text = dr.GetString(1);
txtAdres.Text = dr.GetString(2);
txtSehir.Text = dr.GetString(3);
txtDTarihi.Text = dr.GetString(4);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
dr.Close();
conn.Close();
}
txtAd.Focus();
}
7. Kayt eklenmeden nce, tm deerlerin doru girilmesini kontrol eden
kodlar yazn.
public bool Kontrol()
{
if(txtAd.Text == "")
{
MessageBox.Show("Ad Giriniz");
txtAd.Focus();
return false;
}
else if(txtSoyad.Text == "")
{
MessageBox.Show("Soyad Giriniz");
txtSoyad.Focus();
return false;
}
else if(txtDTarihi.Text = "")
{
{
Kaydet();
btnYeni.Enabled = true;
btnKaydet.Enabled = false;
btnIptal.Enabled = false;
IDDoldur();
cbNo.SelectedIndex = cbNo.Items.Count - 1;
}
}
9. btnYeni dmesinin Click olaynda formu, yeni kayt eklemek iin
hazrlayan Temizle yordamn kullann.
private void btnYeni_Click(System.Object sender,
System.EventArgs e)
{
Temizle();
btnYeni.Enabled = false;
btnKaydet.Enabled = true;
btnIptal.Enabled = true;
cbNo.SelectedIndex = - 1;
}
Snf Aklama
DataTable
Konu: 5 115
DataRow
DataTable nesneleri iin veri satrlarn temsil eder.
DataRelationship
Tablolar arasndaki ilikileri temsil eder.
DataView
DataTable nesneleri zerinde filtreleme, veri gncellemeleri ilemleri
yapmak iin kullanlr.
DataSet dsCopy;
dsCopy = ds.Copy();
DataSet dsClone;
dsClone = cd.Clone();
Da.Fill(ds,Kitaplar)
DataGrig1.DataSource = ds.Tables[Kitaplar];
DataSet snfnn Tables koleksiyonu ile DataSet ierisine bir veya birden ok
DataTable eklenebilir. DataSet snfnn Relations koleksiyonu ile DataSet
ierisine bir veya birden ok DataRelation eklenebilir.
Ds.Tables.Add(dtKitaplar);
rnekte DataTable nesnesi iin Ucret, KDV ve Tutar isminde 3 adet kolon
oluturulmutur. rnekteki KDV kolonu, Ucret kolonun %17 deeri zerinden
hesaplanr. Tutar kolonu ise Ucret ve KDV deerinin toplam ile hesaplanr.
DataAdapter snf, DataSet ile veri kayna arasnda kpr oluturur. Veri
kaynana yaplan balant ile verilerin DataSet nesnesine aktarlmasn salar.
DataAdapter ayrca DataSet zerinde yaplan deiikliklerin veri kaynana
aktarlmasn salar.
da.Fill(ds,Kitaplar);
118 Modl 5: Disconnected Veritaban lemleri
DataGrid1.DataSource= ds.Tables[Kitaplar];
DataAdapter ile veri ekmenin dier bir yntemi SELECT sorgu ile Command
nesnesi oluturmaktr. Oluturulan Command, DataAdapter nesnesinin
SelectCommand zelliine atanr. rnekte Command ile DataAdapter
nesnesinin beraber kullanm gsterilmektedir.
da.Fill(ds, "kitaplar");
DataGrid1.DataSource = ds.Tables["kitaplar"];
da.Fill(ds, "kitaplar");
Fill metodu ile belirli kayt aral DataSet ierisine aktarlabilir. rnekte da isimli
DataAdapter ile ekilen ilk alt kayt, Kitaplar tablosuna aktarlr.
da.Fill(ds, 0, 5, "kitaplar");
da.Update(ds, "siparisler");
Konu: 5 119
DataSet nesnesi ile veritabannn bir kopyas ekirdek bellee atldktan sonra,
bu veriler eitli Windows Kontroller ile gsterilebilir veya deitirilebilir. Bu
kontrollerin en nemlisi DataGrid bileenidir.
120 Modl 5: Disconnected Veritaban lemleri
TextBox1.Text =
ds.Tables["kitaplar"].Rows[2].Item["kitap_baslik"];
Label1.Text =
ds.Tables["kitaplar"].Rows[2].Item["kitap_baslik"];
ComboBox1.DataSource = ds.Tables["kitaplar"];
ComboBox1.DisplayMember =
ds.Tables["kitaplar"].Columns["kitap_baslik"].ToString();
ListBox1.DataSource = ds.Tables["kitaplar"];
ListBox1.DisplayMember =
ds.Tables["kitaplar"].Columns["kitap_baslik"].ToString();
TreeView1.Nodes[0].Text =
ds.Tables["kitaplar"].Rows[1].Item["kitap_baslik"];
int count ;
Count = ds.Tables["kitaplar"].Columns.Count();
}
122 Modl 5: Disconnected Veritaban lemleri
Grafiksel yntem ile balant salamak iin aadaki admlar takip edin.
Ara kutusu zerindeki DataGrid kontrolu form zerine srkleyin.
DataGrid kontrolnn DataSource zelliini, nceden oluturulmu
DataSet nesnesine balayn.
DataGrid kontrolnn DataMember zelliini , DataSet tablolarnn
herhangi biri ile balayn.
DataGrid1.DataSource = ds.Tables["Kitaplar"];
Konu: 5 123
DataTable nesnesine, yeni bir satr eklemek iin DataRow nesnesi kullanlr.
DataTable nesnesinin NewRow metodu ile oluturulan yeni satr, DataRow
nesnesinin deikenine atanr. rnekte dtKitaplar tablosuna drNew isminde
yeni bir kolon eklenmitir.
drNew[0] = 975-8725-14-9;
drNew[1] = Tamer ahiner;
veya
drNew[kitap_ISBN] = 975-8725-14-9;
124 Modl 5: Disconnected Veritaban lemleri
dtKitaplar.Rows.Add(drNew);
DataRow ile DataTable ierisindeki belirli bir satr silinebilir. rnekte DataTable
ierisindeki drdnc kayt silinmitir.
DrSil.Delete();
cmKitaplar.Position = 0;
}
Veritabannn oluturulmas
Bu uygulamada kullanlacak Personel tablosu iin bir veritaban oluturulmas
gerekir.
3. Microsoft Access ile kisi isminde bir veritaban oluturun.
4. Veritabanna Personel isminde bir tablo ekleyin ve tabloda belirtilen
kolonlar ekleyin.
128 Modl 5: Disconnected Veritaban lemleri
Alan Ad Veri Tr
Numara AutoNumber
Ad Text
Soyad Text
DogumTarihi Date/Time
Adres Text
Sehir Text
Kontrollerin eklenmesi
Baglantsz_Personel isminde yeni bir Windows projesi an.
Balantnn Oluturulmas
Kisi veritabanna balant salamak iin OleDbConnection oluturun.
1. Ara kutusu zerindeki OleDbConnection kontrolu form zerine srkleyin.
2. OleDbConnection kontrolunun ConnectionString zellii iin
oluturduunuz balant cmlesini sein.
Kodlarn Yazlmas
try
{
conn.Open();
da.Update(Ds1, "Personel");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
conn.Close();
}
16. btnYeni kontrolunun Click olayna. DataSet tablosu iin yeni satr
oluturan kodu yazn.
BindingContext(Ds1, "Personel").EndCurrentEdit();
BindingContext(Ds1, "Personel").AddNew();
17. btnIptal kontrolunun Click olayna. DataSet tablosu iinde eklenen yeni
satr iptal eden kodu yazn.
BindingContext(Ds1, "Personel").CancelCurrentEdit();
19. btnSil kontrolunun Click olayna. DataSet tablosundan aktif kayd silen
kodu yazn.
BindingContext(Ds1, "Personel").RemoveAt(BindingContext(Ds1,
"Personel").Position);
20. btnIlk kontrolunun Click olayna. ilk kayda giden kodu yazn.
BindingContext(Ds1, "Personel").Position = 0;
21. btnOnceki kontrolunun Click olayna. nceki kayda giden kodu yazn.
BindingContext(Ds1, "Personel").Position -= 1;
22. btnSonraki kontrolunun Click olayna. sonraki kayda giden kodu yazn.
BindingContext(Ds1, "Personel").Position += 1;
23. btnSon kontrolunun Click olayna. son kayda giden kodu yazn.
BindingContext(Ds1, "Personel").Position =
BindingContext(Ds1, "Personel").Count-1;
Konu: 5 133
rnekte DataTable snfnn Find metodu ile kitap barkod numarasna gre
arama yaplmaktadr. Bu aramann sonucunda yazar ad geriye dndrlr.
if (row==null)
{
MessageBox.Show("Kayt Bulunamad!");
}
else
134 Modl 5: Disconnected Veritaban lemleri
{
MessageBox.Show(row["kitap_yazar"].ToString());
}
Arama ilemlerinde zel karakter kullanlabilir. rnein yazar ismi E harfi ile
balayan kaytlar sorgulamak iin aadaki komut kullanlr.
City DESC
Grafiksel yntem ile balant salamak iin aadaki admlar takip edin.
Ara kutusu zerindeki DataView kontrolu form zerine srkleyin.
136 Modl 5: Disconnected Veritaban lemleri
rnekte mteri ad V ile balayan veya Sipari Numaras 10300 den byk
kaytlar sorgulanmaktadr.
Modl zeti
Kontrollerin eklenmesi
Dershane isminde yeni bir Windows projesi an.
Balantnn Oluturulmas
Dershane veritabanna balant salamak iin OleDbConnection oluturun.
3. Ara kutusu zerindeki OleDbConnection kontrolu form zerine srkleyin.
4. OleDbConnection kontrolunun ConnectionString zellii iin
oluturduunuz balant cmlesini sein.
8. Ok butonunu tklayn.
9. daKurs zerinde farenin sa butonunu tklayn.
10. Alan ksayol mensnden Generate DataSet mensn tklayn
11. Choose a Dataset mensnden Existing seeneini sein ve alan
kutudan Dershane.ds seeneini sein.
12. Ok butonunu tklayn.
Kodlarn Yazlmas
dvKurs.RowFilter = "OgrenciID='" +
dgOgrenci.Item(dgOgrenci.CurrentRowIndex, 0) + "' ";
dgKurs.DataSource = dvKurs;
Modul 6:
Modl 6: ASP.NET GR
ASP.NET sayfalar ile yazlan kodlar sunucu tarafnda alr, istemci tarafnda
eitli ilemleri gerekletirebilmek iinse Script ad verilen kodlar kullanlr.
Web uygulamasnn gvenlii ise yine sunucu tarafnda alan .NET
bileenleri ile salanr.
HTML, kullanc ile sunucu arasnda dinamik veri alverii salamaz. HTMLin
bu an kapatmak iin ilk olarak CGI arabirimi (Common Gateway Interface)
gelitirilmitir. CGI arabirimi C dilinde hazrlanan kodlar ile altrlr. CGI
arabiriminin dezavantaj, en ufak bir deiiklikte tm kaynak kodun yeniden
derlenmesidir. Bu durum zaman ve kaynak kullanmn olumsuz ynde artrr.
CGI arabirimininden sonra, sununu ile haberleen ilk dil olan PERL(Practical
Extraction and Reporting Language) gelitirilmitir. Bu dil C ve C++ ile yazlan
scriptler ierir. PERL, CGIn yeniden derlenme dezavantajn ortadan
kaldrmtr. PERL halen aktif olarak kullanlmaktadr.
ASP.NET, multi-tier (ok katmanl) veri eriim modelini kullanr. Bu veri eriim
modeli stemci, ve Veri katmanlarndan oluur.
ASP.NET, ASP ve dier web platformlarna gre daha yksek performans ile
alr. ASP.NET bu performans artn Visual Studio .NET ile gelen, .NET
Framework ve CLR (Common Language Runtime) ile salar.
CLR ile hafza ynetimi otomatik olarak ilenir. New anahtar szc ile
oluturulan nesneler iin, CLR hafzada yer ayrr. Nesneler referanslarn
kaybettikten sonra Garbage Collection mekanizmas ile bellekten silinir.
152 Modl 6: ASP.NET Giri
.Net Framework, ASP.NET ile uygulama gelitirmek iin birok avantaj salar.
Bu avantajlar aada listelenmitir.
IIS Nedir?
IIS Kurulumu
Web uygulamalar gelitirmek iin IIS 5.0 veya daha st versiyonu kurulmaldr.
IIS, Windows 2000 Server iletim sistemi ile varsaylan bileen olarak gelir.
160 Modl 6: ASP.NET Giri
DKKAT: Windows NT 4.0 ve Windows XP Home Edition iletim sistemleri ile ASP.NET
uygulamas gelitirilemez.
IIS Ynetimi
Web Sites alan web uygulamalarn lisleler. Web Sites klasr altndaki
Default Web Site sekmesi zerinden web sunucu seenekleri ayarlanabilir.
Web sunucu zelliklerini deitirmek iin aadaki admlar takip edilir.
PUCU: .Net Framework kurabilmek iin iletim sisteminin Windows NT tabanl olmas
gerekir. Windows 2000 iletim sisteminde minimum SP2 yaplandrmas gereklidir.
Konu: 1 165
Modl zeti
Uygulama Yaynlamak
Default.htm ismindeki HTML sayfay IIS zerinden yaynlayn.
<html>
<head>
<title>HTMLPage1</title>
</head>
<body>
<p>Ho Geldiniz.</p>
</body>
</html>
pucu : Web uygulamann yayn, wwwroot ierisindeki herhangi bir alt klasrden
yaplabilir. rnein http://localhost/WebUygulama. ASP.NET Web Application
uygulamalarn yayn bu yntem ile yaplr.
Modul 8:
Konu: 1 169
Web Form, ASP.NET uygulamalarnn yap tadr. Visual Studio .NET ortam
aracl ile eklenen kontrollerin ve Visual Basic .NET kodlarnn birleimi Web
Formu oluturur.
Web formlar, .aspx uzantl arayz dosyas ve. aspx.cs uzantl kod
dosyalarndan oluur. rnein default.aspx isimli ASP.NET sayfasnn, sunucu
tarafl Visual Basic .NET kodlar default.aspx.cs isimli dosyada tutulur.
Web Formlar Visual Studio ile iki farkl ekilde tasarlanabilir. Design sekmesi,
web kontrollerinin grsel olarak dzenlenmesini salar. HTML sekmesi ise,
kontrollerin HTML kodlar ile eklenmesini salar.
Grsel ksmda Web Form kontrolleri ve bu kontrollere ait HTML kodlar, kod
sayfasnda da bu kontrollerin davranlarn belirleyen Visual Basic .NET
kodlar bulunur.
@Page zellii
Body zellii
Form zellii
172 Modl 7:
Page zellii
Language
Sayfa iinde kullanlacak dil seeneini bildirilir. ASP.NET uygulamalarnda
genellikle VB ve C# dilleri tercih edilir.
CodeBehind
Web formlarn, Visual Basic .NET veya C# uzantl kod dosyasn belirtir.
SmartNavigation
SmartNavigation zelliine True deeri ayarlanrsa, sayfa yeniden yklendii
zaman, kaydrma ubuklarnn sayfa ierisindeki yeri korunur. Bylece sayfa ilk
konumunda kalr. Bu zellik Internet Explorer 5.5 ve st tarayclar tarafndan
desteklenir.
Konu: 1 173
ViewState
ASP.NET teknolojisi ile gelen yeniliklerden biridir. EnableViewState zellii ile
objenin ierisine girilen bilgi ne olursa olsun, sunucu bunu bir deikende tutup
tekrar kullancya geri dndrr. Bu durum sunucuya gnderilen veriler
zerinde hata olumas durumunda, billgilerin kaybolmamasn salar. Bu
zelliin tm kontrolleri iermesi iin, Page ynerge satrnda tanmlanmas
gerekir. Bu zellik True veya False deeri alabilir.
Body zellii
PageLayout(ms_positioning)
Web form iinde kullanlan nesnelerin, grntlenme biimini ayarlar. Bu zellik
iki deer alabilir:
<body ms_positioning=FlowLayout>
</body>
<body ms_positioning=GridLayout>
</body>
Form zellii
Web kontrolleri gruplandrmak iin kullanlr. Her web form iin tek Form etiketi
tanmlanr. Tm kontroller <form> </form> etiketleri arasna eklenir.
Method
Web kontrol zelliklerinin, sunucuya gnderilme eklini belirler. ki deer
alabilir:
Id
Formun isim bilgisini verir. CodeBehind sayfas ierisinde, forma ilem
yaptrmak iin kullanlr.
<form id=deneme >
Runat
Web formlarda kullanlan kontrollerin sunucu ile haberleerek alabilmesi iin
runat=server bildirimi kullanlr. Bu zellik sadece server deerini alabilir.
Standart Kontroller
Bu kontroller, HTML kontrollere alternatif olarak tasarlanmtr. Eski tip HTML
kontrolleri ile yeni ASP.NET kontrolleri arasndaki en belirgin fark, her Web
kontrolnden nce asp: n ekinin kullanlyor olmasdr.
Dorulama Kontrolleri
Kullancnn girdii deerleri kontrol etmek iin kullanlr. Kontroln yaplaca
alana ve veriye gre, farkl dorulama kontrolleri kullanlr. ASP.NET, belirli bir
aralkta veri girii salayan, karlatrma yapan ve belirli deerlerin bo
geilmemesini salayan eitli dorulama kontrolleri sunar.
RequiredFieldValidator, RangeValidator, CompareValidator,
RegularExpressionValidator, CustomValidator, ValidationSummary
kontrolleri, bu grupta yer alr.
Zengin Kontroller
AdRotator ve Calendar zengin kontroller grubunda yer alr. AdRotator, Web
sayfalar zerinde reklam yayn yapmak iin kullanlr. Calendar ise Web
saylar zerinde Takvim gstermek iin kullanlr.
Konu: 1 179
Label
Label,kullancya bilgi vermek iin kullanlr.
TextBox
TextBox, kullancnn bilgi giriini salar. En sk kullanlan giri .kontroludr.
Button
Button, form zerindeki olaylar sunucuya yollamak iin kullanlr. En sk
kullanlan onay kontroludr.
CheckBox
CheckBox, kullancya seenekler arasndan seim yapma imkn sunar.
Onay kutusu iaretlenmi ise True, iaretlenmemi ise False deerini alr.
Onay kutusunun durumu CheckedChanged metodu ile takip edilebilir.
RadioButton
RadioButton, CheckBox kontrolne benzerlik gsterir. Ancak RadioButton
kontrolunun GroupName zellii ile, birden fazla RadioButton arasnda grup
oluturulur. Ayn grup ierisinden sadece bir RadioButton seilebilir. Birden
fazla seenein iaretlenmesine izin verilmez. Onay kutusunun durumu
Checked metodu ile takip edilebilir.
HyperLink
Hyperlink, sayfalar aras dolam salar. Hyperlink kontrolunun grnm
metin veya resim olabilir. ImageUrl zellii ile grntlenecek resim dosyas
belirlenir. NavigateUrl zellii ile gidilecek sayfa belirlenir.
Target zellii, alacak sayfann ayn sayfa zerinde veya yeni bir sayfada
gsterilmesini salar. Tablo 8.2de Target zelliinin deerleri gsterilmektedir.
Image
Image, sayfa iinde resim grntlemek iin kullanlr. ImageUrl zellii ile
grntlenecek resim dosyas belirlenir. ImageAlign zellii resmin
hizalanmas iin kullanlr. AlternateText resime alternatif metin gstermek
iin kullanlr.
ImageAlign="left"
ImageUrl="logo.gif"/>
ImageButton
ImageButton resimli button kontroludur.
LinkButton
LinkButton, HyperLink grnml Button kontroldr. LinkButton
kontrolnn HyperLink kontrolnden fark ise olaylarnn olmasdr.
<br>
<asp:Label id=Label1 runat=server />
184 Modl 7:
DropDownList
DropDownList, alan kutuda veri grntlemek iin kullanlr. DropDownList
eleri Items koleksiyonunda tutulur. Items koleksiyonunun Count zellii ile
toplam e says bulunur. DropDownList kontrolune tasarm veya alma
zamannda e eklenebilir.
ListBox
ListBox, DropDownList kontrolne benzer. Elemanlar liste halinde gsterilir
ve SelectionMode zelliine Multiple deeri atanarak, oklu seim yapma
imkn salanr.
Panel
Panel, dier kontrolleri gruplandrmak iin kullanlr.
Table
Table, satrlarna ve stunlarna programlama yoluyla mdahale edilebilen
tablo kontroldr. Table kontrol iinde TableRow ve TableCell nesneleri
kullanlr. TableCell, tabloda bir hcreyi temsil eder. TableRow ise tabloda bir
satr temsil eder.
Web forma girilecek verinin doruluunu kontrol etmek iin sklkla JavaScript
fonksiyonlar veya uzun ASP kodlar kullanlrd. Bu durum uygulama gelitirme
srecinin artmasna neden olurdu.
RequiredFieldValidator
RequiredFieldValidator, belirtilen kontroln bo geilmemesini salar.
Dorulama yaplacak web kontrolnn ismi ControlToValidate zelliine
girilir Geerli giri yaplmadnda ortaya kacak hata mesaj ErrorMessage
zellii ile belirtilir.
<asp:RequiredFieldValidator id="RequiredFieldValidator1"
style="Z-INDEX: 103; LEFT: 224px; POSITION: absolute;
TOP: 48px" runat="server"
ErrorMessage="Adnz Girmelisiniz!!!"
ControlToValidate="txtad">
</asp:RequiredFieldValidator>
CompareValidator
Kontrol ierisine girilen deeri, sabit deerle veya baka bir kontrol ile
karlatrmak iin kullanlr. Dorulama yaplacak web kontrolnn ismi
ControlToValidate zelliine girilir. Karlastrma yaplacak sabit deer
ValueToCompare zelliine girilir. Type zelliine girilen deerin veri tr,
Operator zelliine ise mantksal operatr girilir.
rnekte txtYas kontrolune yirmi veya yirmiden byk tamsay girii salayan
dorulama ilemi yaplmaktadr.
Konu: 1 189
<asp:CompareValidator id="CompareValidator1"
style="Z-INDEX: 109; LEFT: 232px; POSITION: absolute;
TOP: 88px" runat="server"
ErrorMessage="Yanz 20 ye eit veya byk olmaldr."
ValueToCompare="20"
ControlToValidate="txtYas"
Type="Integer"
Operator="GreaterThanEqual"
Width="128px">
</asp:CompareValidator>
<asp:CompareValidator id="CompareValidator1"
style="Z-INDEX: 109; LEFT: 240px; POSITION: absolute;
TOP: 128px" runat="server"
ErrorMessage="yanz kontrol alannda yazlan
deerden byk olmaldr."
ControlToValidate="txtYas"
Type="Integer"
Operator="GreaterThan"
Width="144px"
ControlToCompare="txtKontrol">
</asp:CompareValidator>
RangeValidator
Kontrol ierisine girilen deerin, belirli bir deer aralnda olmasn salar.
Dorulama kontrollerinin ortak zelliklerine ek olarak MinimumValue,
MaximumValue ve Type zellikleri vardr.
rnekte txtYas kontrolune girilen deerin, otuzbe ile elli arasnda olamasn
salayan dorulama ilemi yaplmaktadr. Bu zel karakterler Tablo 7.4
<asp:RangeValidator id="RangeValidator1"
style="Z-INDEX: 109; LEFT: 240px; POSITION:
absolute; TOP: 128px" runat="server"
ErrorMessage="Yanz 35 ile 50 arasnda olmaldr."
ControlToValidate="txtYas"
Type="Integer"
MaximumValue="50"
MinimumValue="35">
</asp:RangeValidator>
190 Modl 7:
RegularExpressionValidator
Kontrol ierisine girilen deerin, istenilen formatta girilmesini salar.
ValidationExpression zelliine girilen zel karakterler ile veri giri format
salanr. Bu zel karakterler Tablo 7.4 de gsterilmektedir.
<asp:regularexpressionvalidator
id="RegularExpressionValidator1" style="Z-INDEX: 111;
LEFT: 256px; POSITION: absolute; TOP: 168px"
runat="server"
ErrorMessage="Mail giri hatas"
ControlToValidate="txtMail"
ValidationExpression=
"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
</asp:regularexpressionvalidator>
Karakter Tanm
ValidationExpression=
"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
ValidationExpression =\w+@\w+\.\w+
CustomValidator
Ayn anda birden fazla nesnenin deerini kontrol etmek veya kullanc tanml
kontrol yazmak iin CustomValidator kontrol kullanlr.
192 Modl 7:
zellik Aklama
<asp:CustomValidator id="CustomValidator1"
Konu: 1 193
}
catch(Exception ex)
{
args.IsValid = false;
}
}
public void gonder_OnClick(object sender, EventArgs e)
{
if(Page.IsValid)
{
txtmessage.Text = "Sayfada Hata Yok.";
}
else
{
txtmessage.Text = "Sayfa Hatal!";
}
}
ValidationSummary
ValidationSummary, dorulama kontrollerin ErrorMessage zelliine girilen
tm mesajlar listeler.
<asp:ValidationSummary id="ValidationSummary1"
style="Z-INDEX: 114; LEFT: 72px; POSITION: absolute;
TOP: 336px" runat="server"
HeaderText="Hatalar">
</asp:ValidationSummary>
194 Modl 7:
AdRotator
AdRotator, Web sayfalar zerinde reklam yayn yapmak iin kullanlr.
Reklam iin kullanlan banner nesneleri XML dosya ierisine kaydedilir.
<Advertisements>
<Ad>
<ImageUrl>image1.gif</ImageUrl>
<NavigateUrl>http://www.bilgeadam.com</NavigateUrl>
<AlternateText>BilgeAdam BTA</AlternateText>
<Impressions>80</Impressions>
<Keyword>Yazlm</Keyword>
</Ad>
<Ad>
<ImageUrl>image2.gif</ImageUrl>
<NavigateUrl>http://www.microsoft.com</NavigateUrl>
<AlternateText>Microsoft Site</AlternateText>
<Impressions>80</Impressions>
Konu: 1 195
<Keyword>microsoft</Keyword>
</Ad>
</Advertisements>
Calendar
Calendar, web saylar zerinde Takvim gstermek iin kullanlr..
zellik Aklama
Bu zelliin True olmas, seim yapldnda veya TextBox kontrolne yeni bir
deer girildiinde sayfann yeniden yklenmesi anlamna gelir.
</script>
Modl zeti
15.
Web form bileenlerini aklayn?
16. Stardart kontroller nelerdir ? Aklayn.
17. Dorulama kontrolleri nelerdir ? Aklayn.
18. Zengin kontroller nelerdir ? Aklayn.
19. AutoPostBack nedir ?
20. ViewState zelliini aklayn?
200 Modl 7:
TextBox txtAd
TextBox txtSoyad
TextBox txtEmail
TextBox txtSifre TextMode Password
TextBox txtSifreDogrula TextMode Password
RequiredFieldValidator ControlToValidate txtAd
rfvAd
ErrorMessage Ad bo geemezsiniz
Text *
RequiredFieldValidator ControlToValidate txtSoyad
rfvSoyad
ErrorMessage Soyad bo
geemezsiniz
Text *
202 Modl 7:
Width="176px"></asp:textbox><asp:requiredfieldvalidator
id="rfvSoyad" runat="server" ControlToValidate="txtSoyad"
ErrorMessage="Soyad bo
geemezsiniz.">*</asp:requiredfieldvalidator><FONT
face="Tahoma" size="2"></FONT></TD>
</TR>
<TR>
<TD style="WIDTH: 100px"><FONT
face="Tahoma" size="2">E-Mail*</FONT></TD>
<TD><asp:textbox id="txtEmail"
runat="server"
Width="176px"></asp:textbox><asp:requiredfieldvalidator
id="rfvEmail" runat="server" ControlToValidate="txtEmail"
ErrorMessage="E-maili bo geemezsiniz. "
Display="Dynamic">*</asp:requiredfieldvalidator><asp:regu
larexpressionvalidator id="revEmail" runat="server"
ControlToValidate="txtEmail" ErrorMessage="Hatal Email"
Display="Dynamic"
ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-
.]\w+)*">*</asp:regularexpressionvalidator><FONT
face="Tahoma" size="2"></FONT></TD>
</TR>
<TR>
<TD style="WIDTH: 100px"><FONT
face="Tahoma" size="2">ifre*</FONT></TD>
<TD><asp:textbox id="txtSifre"
runat="server" Width="176px"
TextMode="Password"></asp:textbox><asp:requiredfieldvalidato
r id="rfvSifre" runat="server" ControlToValidate="txtSifre"
ErrorMessage="ifreyi
giriniz.">*</asp:requiredfieldvalidator><FONT face="Tahoma"
size="2"></FONT></TD>
</TR>
<TR>
<TD style="WIDTH: 100px"><FONT
face="Tahoma" size="2">ifre Dorula*</FONT></TD>
<TD><asp:textbox
id="txtSifreDogrula" runat="server" Width="176px"
TextMode="Password"></asp:textbox><asp:requiredfieldvalidato
r id="rfvSifre2" runat="server"
ControlToValidate="txtSifreDogrula" ErrorMessage="Dorulama
ifresini giriniz."
Display="Dynamic">*</asp:requiredfieldvalidator><asp:comp
arevalidator id="cvSifreDogrula" runat="server"
ControlToValidate="txtSifreDogrula" ErrorMessage="ifreler
uyumsuz."
Display="Dynamic"
ControlToCompare="txtSifre">*</asp:comparevalidator></TD>
</TR>
<TR>
<TD style="HEIGHT: 47px"
colSpan="2">
<P align="center"><asp:button
id="btnKaydet" runat="server"
Text="Kaydet"></asp:button></P>
</TD>
</TR>
<TR>
<TD style="WIDTH: 100px"
colSpan="2"><asp:validationsummary id="vsHata"
runat="server" Width="286px"></asp:validationsummary></TD>
</TR>
<TR>
Konu: 1 205
TextBox txtEmail
TextBox txtSifre TextMode Password
Text *
Button btnGiris Text Giri
Label lblMesaj Text
206 Modl 7:
</TR>
<TR>
<TD style="HEIGHT: 54px"
colSpan="2">
<P align="center">
<asp:Button id="btnGiris"
runat="server" Text="Giri"></asp:Button></P>
</TD>
</TR>
<TR>
<TD colSpan="2">
<asp:Label id="lblMesaj"
runat="server"></asp:Label></TD>
</TR>
</TABLE>
</P>
</TD>
<TD width="150" bgColor="#0099ff" vAlign="top">
<uc1:yan id="Yan1"
runat="server"></uc1:yan></TD>
</TR>
<TR>
<TD bgColor="#99ccff" colSpan="3">
<uc1:Alt id="Alt1"
runat="server"></uc1:Alt></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
<HEAD>
<title>Kayit</title>
<meta name="GENERATOR" content="Microsoft Visual
Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="C#">
<meta name="vs_defaultClientScript"
content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body bgColor="#f0fff0">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="700" align="center" border="0">
<TR>
<TD bgColor="#99ccff" colSpan="3">
<uc1:Ust id="Ust1"
runat="server"></uc1:Ust></TD>
</TR>
<TR>
<TD width="150" vAlign="top">
<uc1:kategori id="Kategori1"
runat="server"></uc1:kategori></TD>
<TD width="400" vAlign="top">
<P><BR>
Kayt ilemi baaryla tamaland.<BR>
Giri yapmak iin
<asp:HyperLink id="lnk1" runat="server"
NavigateUrl="UyeGiris.aspx">tiklayiniz</asp:HyperLink></P>
</TD>
<TD width="150" bgColor="#0099ff" vAlign="top">
<uc1:yan id="Yan1"
runat="server"></uc1:yan></TD>
</TR>
<TR>
<TD bgColor="#99ccff" colSpan="3">
<uc1:Alt id="Alt1"
runat="server"></uc1:Alt></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
<uc1:yan id="Yan1"
runat="server"></uc1:yan></TD>
</TR>
<TR>
<TD bgColor="#99ccff" colSpan="3">
<uc1:Alt id="Alt1"
runat="server"></uc1:Alt></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
Modul 9:
Mixed Code: Bu metotta web ierii ile kod ayn sayfa ierisinde yazlr.
Bu metot pek tercih edilmez nk okunmas ve dzenlenmesi zordur.
Inline Code: Web ierii ile kod ayn sayfa ierisinde yer alr. ASP.NET
kodu Script etiketi ierisine yazlr.
Code-behind: HTML ierii ve Visual Basic .NET kodu tamamen ayr
dosyalarda tutulur. Kod dosyasna code-behind sayfas denir. Bu metot
Visual Studio .NET ortamnn varsaylan alma eklidir.
Konu: 1 215
Ayn .aspx dosyas iinde HTML kodu ve Visual Basic .NET kodu ayr
blmlere yazlr. Blmlerin ayr tutulmas okunabilirlii arttrr. Server tarafl
kodlar Script etiketi iersine yazlmaldr ve runat=server zellii
belirtilmelidir.
</form>
</body>
</HTML>
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox txtAd;
protected System.Web.UI.WebControls.Label lblMesaj;
protected System.Web.UI.WebControls.Button btnGonder;
}
private void Button1_Click(object sender, System.EventArgs e)
{
lblMesaj.Text = "Hogeldin " +
txtAd.Text.ToString();
}
Codebehind
Code-behind sayfasnn ismini temsil eder. Visual Studio .NET platformunun
dosyay birletirebilmesi iin gereklidir.
Src
Code-behind sayfasnn n derleme ileminden gemedii durumlarda bu
zellik kullanlr. Code-behind sayfasnn ismini temsil eder.
218 Modl 8: Asp.Net ile Kod Gelitirmek
<SCRIPT language=JavaScript>
</SCRIPT>
Konu: 1 219
Client-side olay prosedrleri ile fare ve klavye olaylarna kod yazlabilir. Server-
side olay prosedrleri Click ve Change gibi olaylar iin kullanlr. Fare ve
klavye olaylar gibi ok sk gerekleebilecek olaylar desteklenmez.
220 Modl 8: Asp.Net ile Kod Gelitirmek
Visual Studio .NET ierisinde server-side olay prosedrleri iki adm ile
oluturulur. Birinci adm olay retecek kontrolu web form zerine eklemektir.
kinci adm ise code-behind sayfasna olay prosedurn eklemektir.
rnekte Web form ierisine btn1 isminde bir button yerletirilmitir. Eklenen
btn1 kontrolunun, retilen HTML kodu ve code-behind sayfasna eklenen olay
prosedr kod 8.4 belirtilmitir.
...
rnekte txtAd isimli metin kutusuna girilen deer lblMesaj isimli etikete
yazdrlmaktadr.
Bir ASP.NET sayfas belirli olaylar sras ile alr. Bu sraya Sayfa Yaam
Dngs denir
Page Event yaam dngs sonlandnda sayfaya ait bilgiler hafzadan silinir.
Response.Redirect
} Response.Redirect(ListBox1.SelectedValue);
Postback lemleri
Varsaylan olarak veri yollayan tek kontrol Button kontroldr. Dier kontroller
iin AutoPostBack zelliinin True yaplmas gerekir.
<asp:DropDownList id="DropDownList1"
runat="server" AutoPostBack=True>
<asp:ListItem>Trke </asp:ListItem>
<asp:ListItem>ngilizce</asp:ListItem>
</asp:DropDownList>
Page.IsPostback
Page Load olay, sayfa yklendii zaman gerekleir. Sayfaya yaplan her
istekte Page Load olay iindeki kodlar alr. Ayn sayfann her seferinde
yeniden altrlmas, istenilen bir durum deildir.
Page.IsPostback zellii ile, sayfann Load olay iindeki kodlar sadece bir
kez altrlr. Bylece sayfa yeniden arldnda bu ilemler gereklemez.
Modl zeti
226 Modl 8: Asp.Net ile Kod Gelitirmek
21. Web form ierisinde kod yazmak iin hangi yntemler kullanlr?
22. Code-Behind kod yazma tekniini aklayn?
23. Sayfa yaam dngsn aklayn?
24. Response.Redirect niin kullanlr?
25. Page.IsPostBack niin kullanlr?
Kodlarn yazlmas
}
</script>
<script language="javascript">
function mesaj()
{
alert('Hello World')
}
</script>
Konu 2: HTML
HTML (Hyper Text Markup Language), bir iaretleme dilidir. stemci tarafnda
alan Internet taraycs tarafndan okunur, yorumlanr ve alnan iaretler
neticesinde ekrana ilgili grnt yanstlr.
HTML, HTTP (HyperText Transfer Protocol) ile bir arada alr. Bu iaretleme
dili ile oluturulmu dkmanlar yalnzca istemci tarafnda alr.
Konu: 1 231
HTML Yaps
HTML dilini oluturan bileenler
Tag (etiket)
Attribute (nitelik)
Value (deer) olarak tanmlanr.
HTML kodlarnn temeli etiketlerdir. Bir etiket, HTMLe yaplmas istenen bir
olayn bildirimini temsil eder. Etiketlerin ierisine attribute ad verilen deerler
girilir. Etiketlere ait deiik zellikler, attribute nesnelerinde saklanr.
Attribute deerleri, olaylara ait ayrntlar tutar. Value ise, bir attribute
deerinin davranaca tarz belirler.
Tag
<Html>
Bir etikete ait ama ve kapatma ifadeleri vardr. Ama ifadesi <Html>,kapatma
ifadesi ise </Html> eklinde bildirilir. Yani alan bir etiket, ayn isim bana /
iareti getirilerek kapatlr. rnein <P> etiketi,bir paragraf amaya yarar. </P>
232 Modl 9: Web Programlamaya Giri
Attribute
Value
Bir olayn ne ekilde gerekleecei value ile bildirilir. rnein bir paragraflk
metinin hizalanmas, <DIV> etiketi kullanlarak yaplr. DIV etiketinin align
attribute deeri, left, right, center ve justify deerlerinden birini
alr.
234 Modl 9: Web Programlamaya Giri
<html>
<head>
<title> Temel HTML Belgesi </title>
</head>
<body>
Sayfada kullanlacak herey burada bildirilir.
</body>
</html>
En Sk Kullanlan Etiketler
Balklar
Bir sayfadaki yaznn balklarn standart ekilde tutmak iin HTML balklar
kullanlr. Balklar 1 ve 6 aras deerler alr.
<html>
<head>
<title>Balk Etiketleri</title>
</head>
<body>
<h1>html balklar</h1>
<h1>Bu balk H1 tag'i ile olutu</h1>
<h2>Bu balk H2 tag'i ile olutu</h2>
<h3>Bu balk H3 tag'i ile olutu</h3>
<h4>Bu balk H4 tag'i ile olutu</h4>
<h5>Bu balk H5 tag'i ile olutu</h5>
<h6>Bu balk H6 tag'i ile olutu</h6>
</body>
</html>
Listeler
Belge iinde metine liste grnm vermek iin listeleme etiketleri kullanlr.
Srasz ve sral listeler oluturulabilir. Srasz listeler, <ul>...</ul> etiketleri
arasnda oluturulur. Her bir liste nesnesi iin <li> etiketi kullanlr.
<h4>Srasz Liste</h4>
<ul>
<li>nesne 1
<li>nesne 2
</ul>
<dl>
<dt> Balk 1:
<dd> Balk 1'e ait aklama bu paragrafta girilir.Balk
1'e ait aklama bu paragrafta girilir.
<dt> Balk 2:
<dd> Balk 2'ye ait aklama bu paragrafta girilir.
Balk 2'ye ait aklama bu paragrafta girilir.
</dl>
Resim Grntleme
HTML sayfalarnda resim grntlemek iin <img> etiketi kullanlr. src
attribute deeri, grntlenecek resmin adresini tutar.
<a href="http://www.bilgeadam.com">
<img src="c:\resimler\resim1.jpg">
</a>
Tablolar
Satr ve stnlardan oluan yaplara tablo denir. Bir Web sayfas ierisinde,
grnm belirli snrlarda tutmak iin tablolardan yararlanlr.
HTML dosyas iine gmlm kodlara script denir. Yorumlanmas iin internet
taraycsna ihtiya vardr. HTML dilinin karlayamad baz ihtiyalara zm
retmek iin scriptler kullanlr.
Konu: 1 239
JavaScript
JavaScript kodlar yazmak iin Notepad gibi bir metin editr yeterlidir. Kodlar
<script>...</script> etiketleri arasnda yazlmaldr.
Bu kod alan iinde yorum satrlar iin // ve /* ... */ ifadeleri kullanlabilir.
Sadece bir satr yorum satr yaplacaksa // ifadesi kullanlr.
// bu satr yorum satrdr.
Birden fazla satr yorum satr yaplacaksa, satrlarn balad yere /*, bittii
yere */ ifadeleri yerletirilir.
/* yoruma alnan 1. satr
2. satr
...
*/
JavaScript kodlar HTML sayfalar iine <head> etiketlerine gml olarak veya
.js uzantl dosyalara referans gnderilerek HTML iinden arlabilir.
240 Modl 9: Web Programlamaya Giri
<html>
<head><title>onClick</title>
<script language="javascript">
function merhaba()
{
alert ("beni tikladiniz");
}
</script>
</head>
<body>
<input type="button" name="tikla" value="tikla"
onClick=merhaba()>
</body>
</html>
script etiketinin language attribute deeri ile kullanlacak script dili belirtilir.
Javascript kullanlmas iin burada language=javascript bildirimi yaplr.
<html>
<head>
<title>JavaScript rnei</title>
</head>
<body>
<br> Bu yaz html ile yazld.
<br>
<script language="JavaScript">
document.write("te bu ise JavaScript ile yazld!")
</script>
<br>
Bu yaz yine HTML ile yazld.
</body>
</html>
Buradaki script ifadesi head etiketleri arasnda bir fonksiyon olarak deil,
body etiketleri arasnda satr halinde kullanlmtr.
Deikenler
var anahtar szc ile yeni bir deiken oluturulur. Tr bilgisi saklanmaz.
Saysal deerler verildiinde ilem yapma yeteneine sahip olurlar. ift trnak
ierisinde deer verildiinde ise metin ifadesi olarak anlalr.
Konu: 1 241
var deger1;
var deger2=20;
var deger3=30;
var ay=Mays;
var yil=2005;
var degerToplam=deger2+deger3;
var tarih=ay+yil;
Koul Operatr
[koul ifadesi] ? koul_doru_ise : koul_yanl_ise
var a=5;
var b=7;
var c=14;
var d=23;
var e;
e = (a + b < c) ? d : a+b ;
e = a+ b;
Operatrler
JavaScript operatrleri, Visual Basic .NET dilinde kullanlan operatrlerden
biraz farkldr. rnein mod almak iin Mod anahtar szc yerine % mod alma
operatr kullanlr.
Atama Operatr ( = )
Deikenlere deer atamak iin = karekteri kullanlr.
Aritmetik Operatrler
Deikenler zerinde aritmetik ilemler yapmak iin tanmlanm operatrlerdir.
Operatr Aklama
var x = 5;
// x deikeni bir arttrlr ve ekrana 6 deeri yazlr
document.write(++x);
Konu: 1 243
Deikenin subfix kullanmnda ise nce deer alnr, ak bir sonraki satra
getikten sonra deikenin deeri bir arttrlr.
var x = 5;
/* x deikeni nce yazlr, sonra bir arttrlr.
Yani ekrana 5 yazlr. */
document.write( x++);
// Ekrana 6 deeri yazlr.
document.write(x);
Karlatrma Operatrleri
JavaScript kodlar ierisinde de karlatrma ilemleri yaplabilir. Ancak bu
operatrler Visual Basic .NET karlatrma operatrlerinden biraz farkldr.
Operatr Aklama
Mantksal Operatrler
Mantksal operatrler ise Visual Basic .NET mantksal operatrlerinden
tamamen farkldr.
244 Modl 9: Web Programlamaya Giri
Operatr Aklama
var sehir;
sehir=prompt(Yaadnz ehrin trafik kodunu giriniz,
stanbul iin 34, Ankara iin 6 gibi);
JavaScript dilinde HTML sayfasna yaz yazdrmak iin write komutu kullanlr.
if ( koul )
// koul doru ise alacak ifade
Koulun doru olmas halinde yaplacak ilemler bir satrdan fazla yer
tutuyorsa, bu satrlar {} parantezleri ile gruplanr. Visual Basic .NET dilindeki
gibi End if ifadesi kullanlmaz.
if (koul) {
//koul doru ise
}
else {
//koul yanl ise
}
var a;
var b = 10;
for (a = 1; a <= b; a++) {
document.write( a , . say, <br>);
}
Visual Basic .NET dilindeki Select Case dngsne karlk olarak JavaScript
dilinde switch-case ifadesi vardr. Genel kullanm:
switch (parametre)
{
case ifade1:
// ifade1 koulu doru ise yaplmas istenenler
break; //break ile dier koullarn da almas
//engellenir ve dngden klr.
case ifade2:
//ifade2 koulu doru ise yaplmas istenenler
break;
}
Fonksiyonlar
JavaScript dilinde, kodlarn yeniden kullanlabilmesi iin kullanlr. Genel
kullanm:
246 Modl 9: Web Programlamaya Giri
JavaScript Nesneleri
JavaScript iinde baz ilemler, baz nesnelerin fonksiyonlar arlarak yaplr.
rnein document.write komutu, aslnda document nesnesinin write
metodunu arr.
Window Nesnesi
Genel pencere zelliklerini tutan nesnedir. Pencere ama ve kapama ilemleri
iin bu nesne kullanlr.
Genel kullanm:
window.open( url ,pencere_ismi,pencere_ozellikleri);
window.close();
Open komutu ile yeni bir pencere alrken, close komutu ile pencere kapatlr.
Yeni bir pencere amak iin open komutuna ilk parametrenin girilmesi
zorunludur. Pencere_ismi, birden fazla pencere ile ilem yapld durumlarda
kullanlabilir. Pencereye ait zellikler tablo 9.4te belirtilmitir.
zellik Aklama
window.open("http://www.bilgeadam.com", "bilgeadam" ,
"menubar=no, toolbar=no, scrollbars=yes, location=yes,
width=300, heigt=300";)
Internet taraycs ile daha nce ziyaret edilmi sayfalara tekrar ulaabilmek iin
window.history.go(-1) komutu kullanlabilir. -1 ifadesi ile bir nceki sayfaya
gidilir. Say arttrlarak daha nceki sayfalara da gidilebilir.
appname Tarayc ad
appversion Tarayc versiyonu
appCodeName Taraycnn kod ad
userAgent Taraycnn sunucuya kendini
tantrken verdii isim.
Tablo 9.5: Navigator (Tarayc) Nesnesinin Deikenleri
<html>
248 Modl 9: Web Programlamaya Giri
<head>
<title>Browser'mz tanyalm</title>
<METAcontent=text/html;CHARSET=iso-8859-9 http-
equiv=Content-Type>
<script language="Javascript">
function Tarayici()
{
var browseradi=" ";
browseradi +="Browser:"+navigator.appName +"\r ;
browseradi +="Surumu:"+navigator.appVersion +"\r ;
browseradi +="Kodadi:"+navigator.appCodeName+"\r ;
browseradi +="Useragent:"+navigator.userAgent+"\r ;
alert(browseradi);
}
</script>
</head>
<body onLoad="Tarayici()"></body>
</html>
Olaylar
Bir Web sayfas zerinde kullancnn her trl hareketi kontrol edilebilir. Bir
kontroln zerine gelmesi, dolamas ve zerinden ayrlmas gibi hareklere
olay denir. Bu olaylar ise onClick, onMuoseOver, onMouseOut,
onSubmit,onReset, onChange, onLoad, onUnLoad, onError, onAbort,
onFocus, onBlur olarak belirtilebilir.
onClick
Internet sitelerinin ounda en sk kullanlan JavaScript olaydr. Sayfa
zerinde bir nesnenin fare ile tklanp braklmas sonucunda gerekleen
olaydr. Link, button ve resim nesneleri tklanarak onClick olay tetiklenebilir.
Nesnelerin etiketlerinde ise onClick olaylarn tetikleyen fonksiyonlarn ismi
bildirilmelidir.
function tikla()
{
alert(Tklama ilemi gerekleti);
}
<input type="button" name="tikla" value="tikla"
onClick=tikla()>
onMouseOver, onMouseOut
Fare nesnenin zerindeyken onMouseOver, fare nesne zerinden ayrlnca
onMouseOut olaylar devreye girer.
Konu: 1 249
function nesneUzerinde()
{
window.status="u anda nesne zerindesiniz.";
}
function nesneDisinda()
{
window.status="nesnenin dna ktnz." ;
}
<a href="http://www.google.com"
onMouseOver = nesneUzerinde()
onMouseOut = nesneDisinda()> Google
</a>
onSubmit
Web safyalarnda ziyaretinin forma bilgi girip sunucuya gndermesi
durumlarnda onSubmit devreye girer. Gnderilecek forma girilen verilerin
uygunluunun kontrol bu olayn tetikledii fonksiyonlara yaptrlabilir.
function dogrula()
{
confirm (Formu doldurduysanz OK'i tklaynz');
}
onReset
Form iinde kullanlan tm metin alanlarnn temizlenmesini salar. Doldurulan
formda yanllk olduunda bu olay tetiklenir. Kullancya onay penceresi
kartmak iin de kullanlabilir.
function sil()
{
return confirm('Silmek istediginize emin misiniz?');
}
onChange
Bilgi girii yaplan alanlarda, deiikliin gerekletii bilgisi onChange olay ile
tetiklenir.
250 Modl 9: Web Programlamaya Giri
function degisti()
{
alert(Seimi deitirdiniz);
}
<form method="post">
<p>
<select name="degistir" size="1" onChange="degisti()">
<option>Istanbul
<option>Ankara
<option>Antalya
</select>
</form>
onLoad, onUnLoad
onLoad olay sayfaya giri yapldnda gerekleir. onUnLoad olay sayfadan
kldnda gerekleir.
function giris()
{
alert(Sayfaya Giri Yaptnz!");
}
function cikis()
{
alert("Sayfadan ktnz..");
}
onError, onAbort
Ziyaret edilen sayfadaki nesneler, eitli nedenlerden dolay tam olarak
yklenememi olabilir. Genellikle resim nesnelerinin yklenmesinde problem
kabilir. Bu tr durumlar ziyaretiye bildirmek iin onError veya onAbort
olaylar kullanlr.
onFocus, onBlur
onFocus olay kullanc kontrollerine giri yaplrken gerekleir. OnBlur olay
ise ve kullanc kontrollerinden k yaplrken gerekleir.
function dogru()
{
Konu: 1 251
VbScript
<html>
<body>
<script language="vbscript">
document.write("lk VBScript!")
</script>
</body>
</html>
<html>
<body>
<script language=vbscript">
dim isim
isim="Bilge Adam"
document.write(isim)
</script>
</body>
</html>
<html>
<head>
<script language="vbscript">
sub mySub()
msgbox("sub procedure")
end sub
</script>
</head>
<body>
<script language=vbscript">
call mySub()
</script>
<p> sub procedure geri dn deeri tamaz.</p>
</body>
</html>
<html>
<head>
<script language=vbscript">
function sehir()
sehir = "Trabzon"
end function
</script>
</head>
<body>
<script language=vbscript">
document.write("En sevdiim sehir: " & sehir())
</script>
<p> function procedure geri dn deerine sahiptir.</p>
</body>
</html>
Konu 4: CSS
(Inline)
Herhangi bir HTML etiketi iinde stil kullanlabilir. rnein paragraf etiketine
style=x attribute deeri eklenebilir. Ve o paragrafa zel tasarm zellikleri
bildirilebilir.
Gml (Embedded)
Gml stiller, HTML sayfasnn Head etiketi ierinde tanmlanr. Bu stilleri
tanmlamak iin <Style>..</Style> etiketleri kullanlmaldr.
254 Modl 9: Web Programlamaya Giri
<html>
<head>
<style>
body
{
background:#ff0000;
color:#ffffff;
}
</style>
</head>
<body>
Krmz zemin zerine beyaz renkle yaz
</body>
</html>
Balantl (linked)
Stil verileri .css uzantl dosyalarda tanmlanr. En gl tasarm zellii
balantl stil dosyalarndadr. Tasarm zellikleri bu dosyada tanmlanr ve her
sayfa iinden bu stil dosyasna balant verilerek etiketlere gerekli stiller
uygulanr.
HTML sayfalarda stil dosyas ile balant kurmak iin aadaki tanmlama
yaplr. Bu tanmlama head etiketleri ierisinde yaplr.
zellikler ve deerler birleerek bir tanm oluturur. Seici ve tanm ise bir kural
oluturur. Sayfa dzeni ,kenar boluklar, girinti ve hizalama deerleri kontrol
edilerek hazrlanm bir site profosyonel bir grnme sahip olabilir.
Body {
margin-left: 10px;
margin-right: 10px;
margin-top: 20px;
margin-bottom:15px;
}
alpha koyar.
none Liste elemanlar iin bir sembol almaz.
list-style- Liste imleri yerine resim kullanr.
image
list-style- indise: Listenin ikinci satrn en soldan balatr.
position
outside: kinci satr bir ncekinin dikey
hizasndan balatr.
Tablo 9.8: Liste zellikleri ve deerleri
p {
background-color:blue;
background-image: url(back.gif);
background-position:left;
backround-repeat:repeat-x;
}
Seiciler
Seiciler, oluturulan <H1>, <P> gibi etiketlerin mevcut zelliklerini ayn tutarak
onlara yeni zellikler ekleme olana verir. Ayrca istenilen bir kelimeye stil
zellii atayp istenilen zamanda arlmasn salar.
h1 {
background:green;
color:white;
font-weight:bold;
font-family:arial;
}
h1.kirmizi{color:red}
Konu: 1 257
Linkler ve CSS
Sayfalarda ziyaret edilen linklerin mavi alt izgilerini ortadan kaldrmak veya
baka stiller vermek iin CSS dilinden yararlanlabilir. <A> etiketinin stilini
belirlemekte kullanlan drt ifade vardr:
active: Tklanan linkin stilini belirler.
link: Link yaz stilini belirler.
visited: Ziyaret edilmi linkin sitilini belirler.
hover: Fare linkin zerindeyken nasl bir stil alacan belirler.
a:link{text-decoration:none; color:teal}
a:active{text-decoration:none; color:red}
a:visited{text-decoration:none; font-family:Times New Roman;
color:green}
a:hover{background-color:teal; color:white; font-
family:arial}
Snf ve Gruplama
Snf (class), stil kurallarnn kk paralara ayrlmasn salar. Sayfadaki
herhangi bir yaznn dier yazlardan farkl grnmesi istendii durumda,
istenilen sayda zel HTML etiketi oluurulabilir. rnein sayfada iki farkl trde
H1 etiketi kullanlmak istensin.
H1.serif {
font: 14pt Century Schoolbook;
}
H1.sans{
font: 20pt Arial;
}
Bu stilleri kullanmak iin kod iine serif veya sans snf ismi vermek yeterlidir.
P.1{font:12pt/18pt verdana}
Her iki gsterimde de ayn grnt elde edilir. Ancak gruplamada deerler
girerken font-size, font-height ve font sralamasna uyulmas gerektiine
dikkat edilmelidir.
258 Modl 9: Web Programlamaya Giri
Modl zeti
26.
HTML nedir? En sk kullanlan HTML etiketlerini aklayn.
27. Script Nedir?
28. Java Script nedir? Java Script niin kullanlr?
29. CSS nedir?
30. CSS, Html sayfalara nasl dahil edilebilir?
Konu: 1 259
<div id="klavyem">
<table width="200" border="1" cellpadding="0"
cellspacing="0" bordercolor="#00ff00" bgcolor="#0099cc"
ID="Table1">
<tr>
<td><input type="button" id="ba"
onClick="HarfA()" value="A" NAME="ba"></td>
<td><input type="button" id="bb"
onClick="HarfB()" value="B" NAME="bb"></td>
<td><input type="button" id="bc"
onClick="HarfC()" value="C" NAME="bc"></td>
<td><input type="button" id="bd"
onClick="HarfD()" value="D" NAME="bd"></td>
<td><input type="button" id="be"
onClick="HarfE()" value="E" NAME="be"></td>
<td><input type="button" id="bf"
onClick="HarfF()" value="F" NAME="bf"></td>
<td><input type="button" id="bg"
onClick="HarfG()" value="G" NAME="bg"></td>
<td><input name="button2" type="button" id="bh"
onClick="HarfH()" value="H"></td>
</tr>
<tr>
<td><input type="button" id="bi"
onClick="HarfI()" value="I" NAME="bi"></td>
<td><input type="button" id="bj"
onClick="HarfJ()" value="J" NAME="bj"></td>
<td><input type="button" id="bk"
onClick="HarfK()" value="K" NAME="bk"></td>
<td><input type="button" id="bl"
onClick="HarfL()" value="L" NAME="bl"></td>
<td><input type="button" id="bm"
onClick="HarfM()" value="M" NAME="bm"></td>
<td><input type="button" id="bn"
onClick="HarfN()" value="N" NAME="bn"></td>
<td><input type="button" id="bo"
onClick="HarfO()" value="O" NAME="bo"></td>
<td><input type="button" id="bp"
onClick="HarfP()" value="P" NAME="bp"></td>
Konu: 1 261
</tr>
<tr>
<td><input type="button" id="br"
onClick="HarfR()" value="R" NAME="br"></td>
<td><input type="button" id="bs"
onClick="HarfS()" value="S" NAME="bs"></td>
<td><input type="button" id="bt"
onClick="HarfT()" value="T" NAME="bt"></td>
<td><input type="button" id="bu"
onClick="HarfU()" value="U" NAME="bu"></td>
<td><input type="button" id="bv"
onClick="HarfV()" value="V" NAME="bv"></td>
<td><input type="button" id="by"
onClick="HarfY()" value="Y" NAME="by"></td>
<td><input type="button" id="bz"
onClick="HarfZ()" value="Z" NAME="bz"></td>
</tr>
</table>
</div>
<br>
<form name="form1" method="post" ID="Form1">
<table width="268" border="1" cellpadding="1"
cellspacing="2" bordercolor="#99ff66" bgcolor="#0099cc"
ID="Table2">
<tr>
<td width="85">Kullanici Adi</td>
<td width="167"><input name="text" type="text"
id="user"></td>
</tr>
<tr>
<td>Parola</td>
<td><input type="password" id="password"
readonly NAME="password"></td>
</tr>
<tr>
<td> </td>
<td><input name="button2" type="button"
id="giris" value="Giris Yap" onClick="hosgeldin()">
<input name="button2" type="reset"
id="temizle" value="Sil"></td>
</tr>
</table>
</form>
Kodlarn yazlmas
SanalKlavye Html sayfasnn HTML blmne aadaki kodlar yazn. Bu kod,
Java Script ile istemci tarafl fonksiyonlar eklemektedir. Bu kodu
<Head>..</Head> etiketleri arasna ekleyin.
<script language="javascript">
function HarfA()
{
form1.password.value += "A";
}
function HarfB()
{
form1.password.value += "B";
}
262 Modl 9: Web Programlamaya Giri
function HarfC()
{
form1.password.value += "C";
}
function HarfD()
{
form1.password.value += "D";
}
function HarfE()
{
form1.password.value += "E";
}
function HarfF()
{
form1.password.value += "F";
}
function HarfG()
{
form1.password.value += "G";
}
function HarfH()
{
form1.password.value += "H";
}
function HarfI()
{
form1.password.value += "I";
}
function HarfJ()
{
form1.password.value += "J";
}
function HarfK()
{
form1.password.value += "K";
}
function HarfL()
{
form1.password.value += "L";
}
function HarfM()
{
form1.password.value += "M";
}
function HarfN()
{
form1.password.value += "N";
}
function HarfO()
{
form1.password.value += "O";
}
function HarfP()
{
Konu: 1 263
form1.password.value += "P";
}
function HarfR()
{
form1.password.value += "R";
}
function HarfS()
{
form1.password.value += "S";
}
function HarfT()
{
form1.password.value += "T";
}
function HarfU()
{
form1.password.value += "U";
}
function HarfV()
{
form1.password.value += "V";
}
function HarfY()
{
form1.password.value += "Y";
}
function HarfZ()
{
form1.password.value += "Z";
}
function hosgeldin()
{
alert("hosgeldiniz sayin: " + form1.user.value)
}
</script>
Kodlarn yazlmas
Popup, Html sayfasnn HTML blmne aadaki kodlar yazn. Bu kod, Java
Script ile istemci tarafl fonksiyon eklemektedir. Bu kodu <Head>..</Head>
etiketleri arasna ekleyin.
<script language="javascript">
function pencereac()
{
window.open('acilan_pencere.htm','acilan','width=500,heig
ht=300')
}
</script>
Modl 10:
Projeye yeni bir kullanc kontrol eklemek iin aadaki admlar takip edin.
Kullanc kontrol formlar, normal Web formlar gibi tasarlanr. Kullanc kontrol
dosyalar .ascx ve bu kontrollere ait code-behind sayfas ise ascx.cs uzantldr.
Web form direktifi olan @Page yerine kullanc kontrollerinde @Control ifadesi
kullanlr. Bu direktif @Page direktifinin AspCompat ve Trace dndaki tm
attribute deerlerine sahiptir.
270 Modl 10: Kullanc Kontrolleri Oluturmak
@Register ifadesi ile forma balanan kullanc kontrolu, aada kod ile web
form ierisinde grntlenir. Kullanc kontrolleri sunucu zerinde alt iin,
runat="server" parametresi ile tanmlanmaldr.
Modl zeti
Ust isimli kullanc kontrolunn code behind kodlar aadaki gibi olacaktr.
Using System.Data.OleDb
</TD>
</TR>
</TABLE>
Balant oluturulmas
KitapDB veritaban zerinde ilem yaplmas iin balant kurulmas gerekir. Bu
balanty Server Explorer kullanarak oluturun. Bu baglant ile veritaban ierisindeki
Kategori tablosu, dsBook isimli dataset ierisine eklenecektir.
using System.Data.OleDb;
conn.ConnectionString = connStr;
int i ;
}
}
CheckBoxList kontrol ile birden fazla seim yaplabilir. Fakat
RadioButtonList kontrol ile sadece bir e seilebilir.
CheckBoxList1.DataBind();
}
Repeater
<td>
<asp:Label ID=Lbl2 Runat=server
text='<%# Databinder.eval(container.dataitem,
"contactname")%> ' >
</asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate>
<b>BilgeAdam BTA</b>
</FooterTemplate>
</asp:Repeater>
ablon Ad Aklama
text='<%#Databinder.eval(container.dataitem,
"companyname")%> '
text='<%#Databinder.eval(container.dataitem,
"contactname")%> '
Repeater1.DataSource = DataSet2;
Repeater1.DataBind();
DataList
288 Modl 11:
Datalist eklemek iin aadaki admlar takip edin. rnekte DataList kullanm
gsterilmektedir.
DataGrid
HTML
</asp:DataGrid>
BoundColumn
BoundColumn, DataGrid kontrolnn varsaylan kolonudur. Kaytlar
grntler. Veri kaynandan alnan tablodan sadece belirli kolonlarn
292 Modl 11:
conn.Open();
DataGrid1.DataSource = cmdSelect.ExecuteReader();
DataGrid1.DataBind();
conn.Close();
}
Html
<asp:DataGrid ID="DataGrid1"
AutoGenerateColumns="False"
EnableViewState="False" Runat="Server">
<Columns>
<asp:BoundColumn DataField="Kitap_baslik"
HeaderText=Kitap Ad />
<asp:BoundColumn DataField="Kitap_yazar"
HeaderText=Yazar Ad/>
</Columns>
</asp:DataGrid>
<asp:BoundColumn DataField="Kitap_fiyat"
DataFormatString="{0:c}"/>
HeaderText="<img src=myImage.Gif>Balk"
HyperLinkColumn
HyperLinkColumn, kaytlar linkler eklinde grntleyen kolondur. Yani
DataGrid kontrolnde grntlenen kaytlar zerinden baka sayfalara ilgili
linkler verilmek isteniyorsa, HyperLinkColumn kullanlmaldr. DataGrid
kaytlarna ilikin ayrntl bilgi verilmek isteniyorsa master/detail formlar
eklinde grnt vermek iin yine bu kolon kullanlabilir.
DataGrid1.DataSource = cmdSelect.ExecuteReader();
DataGrid1.DataBind();
conn.Close();
}
294 Modl 11:
Html
<asp:DataGrid ID="DataGrid1"
AutoGenerateColumns="False" EnableViewState="False"
CellPadding="10" Runat="Server">
<Columns>
<asp:BoundColumn
HeaderText="Mteri Ad"
DataField="musteri_ad" />
<asp:BoundColumn
HeaderText="Mteri Soyad"
DataField="musteri_soyad" />
<asp:HyperLinkColumn
HeaderText="Detaylar"
DataNavigateUrlField="musteri_id"
DataNavigateUrlFormatString="Detaylar.aspx?id={0}"
Text="Detay Grntle" />
</Columns>
</asp:DataGrid>
DataGrid1.DataSource = cmdSelect.ExecuteReader();
DataGrid1.DataBind();
conn.Close();
}
Html
<asp:DataGrid ID="DataGridLink"
AutoGenerateColumns="False" EnableViewState="False"
ShowHeader="False" CellPadding="10" Runat="Server">
<Columns>
<asp:HyperLinkColumn
DataNavigateUrlField="link_url"
DataTextField="link_title" />
</Columns>
</asp:DataGrid>
TemplateColumn
TemplateColumn, kaytlar bir ablona uyarak grntleyen kolondur.
DataGrid hcreleri iinde grntlenecek verileri eitli kontroller kullanarak
ekrana yanstmak iin bu kolon kullanlr. Ancak TemplateColumn, kendi iinde
HeaderTemplate, FooterTemplate, ItemTemplate ve EditItemTemplate
olmak zere alanlara ayrlr.
DataGrid1.DataSource = cmdSelect.ExecuteReader();
DataGrid1.DataBind();
conn.Close();
}
HTML
<asp:DataGrid ID="DataGrid1"
AutoGenerateColumns="False" EnableViewState="False"
ShowHeader="False" CellPadding="10" Runat="Server">
<Columns>
<asp:BoundColumn
DataField="kitap_baslik" />
<asp:TemplateColumn>
<itemTemplate>
<table>
<tr>
<td>Yazar:</td>
<td><%# DataBinder.Eval( Container.DataItem,
"kitap_yazar" )%></td>
</tr>
<tr>
<td>Aklama:</td>
<td><%# DataBinder.Eval(Container.DataItem,
"kitap_aciklama" )%></td>
</tr>
</table>
</itemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
Modul 11: 297
ButtonColumn
ButtonColumn, Button kontrollerinin grntlenmesini salar. Uygulanacak
metot kolon zerinde, button eklinde grntlenir. rnein Sepete Ekle gibi
bir i iin Button kullanlr ve ButtonColumn ierisinde tanmlanr.
conn.Open();
DataGrid1.DataSource = cmdSelect.ExecuteReader();
DataGrid1.DataBind();
conn.Close();
}
e.Item.Font.Bold = true;
}
else
{
e.Item.BackColor = System.Drawing.Color.Blue
e.Item.Font.Bold = False
}
}
HTML
<asp:DataGrid ID="DataGrid1"
OnItemCommand="DataGrid1_ItemCommand"
AutoGenerateColumns="False"
CellPadding="10" Runat="Server">
<Columns>
<asp:BoundColumn
HeaderText="Kitap Ad" DataField="kitap_baslik" />
<asp:ButtonColumn
CommandName="select"
Text="Select!" />
<asp:ButtonColumn
CommandName="unselect"
Text="UnSelect!" />
</Columns>
</asp:DataGrid>
if (e.CommandName="select")
{
e.Item.BackColor = System.Drawing.Color.LightGreen;
e.Item.Font.Bold = true;
}
else
{
e.Item.BackColor = System.Drawing.Color.White;
e.Item.Font.Bold = False;
}
ButtonColumn zellikleri:
ButtonType: LinkButton veya PushButton
Modul 11: 299
CommandName
DataTextField
DataTextFormatString
FooterText
HeaderImageUrl
HeaderText
Text
EditCommandColumn
EditCommandColumn, Edit, Update, Cancel gibi dzenleme komutlarnn
grntlenmesini salar. EditCommandColumn ile sadece bir satr
dzenlenebilir. Dzenlemenin veritaban gemesi ayr ilemler gerektirir.
EditCommandColumn zellikleri:
ButtonType
CancelText
EditText
FooterText
HeaderImageUrl
HeaderText
UpdateText
300 Modl 11:
DataGrid1.DataSource = cmdSelect.ExecuteReader();
DataGrid1.DataBind();
conn.Close();
}
Html
Sayfalama
Sayfalarca uzunluktaki kaytlar bir seferde gstermek yerine sayfalara ayrmak
daha kullanl olur. DataGrid kontrolnde sayfalama yapabilmek iin
kontroln AllowPaging zellii True yaplr. Varsaylan deer False deeridir.
PageIndexChanged olayn tetikleyecek bir metodun yazlmas gerekir.
html
<asp:DataGrid ID="DataGrid1"
302 Modl 11:
AllowPaging="True" PageSize="5"
OnPageIndexChanged="DataGrid1_PageIndexChanged"
CellPadding="3" Runat="Server" />
PlaceHolder Kullanm
Programn alma zaman srasnda, kullancdan gelecek istee gre yeni
kontroller eklenmek isteniyorsa PlaceHolder kontrol kullanlr. PlaceHolder
kontrolnn amac, dinamik olarak eklenen bu kontrollerin bir arada
tutulmasdr. Dinamik olarak oluturulan kontroller istenildii gibi dizayn
edilebilir.
for (i = 1;i<=10;i++)
{
PlaceHolder1.Controls.Add(
New LiteralControl("<p>Alan " & i & ": "));
PlaceHolder1.Controls.Add(New TextBox);
}
Namespace
using System.Data;
using System.Data.OleDb;
Inline kod yazmnda <%@ %> ifadeleri arasnda isim alanlar using yaplr.
Modl zeti
using System.Data.OleDb ;
comm.Parameters.Add("@ad", txtAd.Text);
comm.Parameters.Add("@soyad", txtSoyad.Text);
comm.Parameters.Add("@email", txtEmail.Text);
comm.Parameters.Add("@sifre", txtSifre.Text);
int sonuc;
try
{
conn.Open();
sonuc = comm.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
conn.Close();
}
if (sonuc == 1)
{
Response.Redirect("Kayit.aspx");
}
}
using System.Data.OleDb;
comm.Parameters.Add("@email", txtEmail.Text);
comm.Parameters.Add("@sifre", txtSifre.Text);
bool sonuc;
OleDbDataReader dr = OleDbDataReader();
try
{
conn.Open();
dr = comm.ExecuteReader();
if (dr.HasRows == true)
{
sonuc = true;
if (dr.Read = true)
{
Session["user"] = dr.Item("Email");
Session["ad"] = dr.Item("Ad");
Session["soyad"] = dr.Item("Soyad");
Session["musteriId"] = Item("MusteriID");
}
}
else
{
sonuc = false;
}
dr.Close();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
if (sonuc == true)
{
Response.Redirect("Default.aspx");
}
Else
{
lblMesaj.Text = "Hatali kullanici adi veya sifre";
}
}
Label lblKitapAdi
310 Modl 11:
Label lblYazarAdi
Label lblFiyat
Label lblAciklama
Label lblMesaj
Image imgResim
TetxBox txtAdet
Button btnSatinAl Text Satn Al
</TR>
<TR>
<TD width="150" vAlign="top"><uc1:kategori
id="Kategori1" runat="server"></uc1:kategori></TD>
<TD vAlign="top" width="400">
<P><BR>
</P>
<P>
<TABLE id="Table2" borderColor="#000033"
cellSpacing="0" cellPadding="0" width="300" align="center"
border="0">
<TR>
<TD width="100" rowSpan="5">
<P align="center"><asp:image
id="imgResim" runat="server"></asp:image></P>
</TD>
<TD>
<P align="center"><asp:label
id="lblKitapAdi" runat="server"></asp:label></P>
</TD>
</TR>
<TR>
<TD>
<P align="center"><asp:label
id="lblYazarAdi" runat="server"></asp:label></P>
</TD>
</TR>
<TR>
<TD>
<P align="center"><asp:label
id="lblFiyat" runat="server"></asp:label></P>
</TD>
</TR>
<TR>
<TD>
<P align="center"><asp:label
id="lblAciklama" runat="server"></asp:label></P>
</TD>
</TR>
<TR>
<TD>
<P align="center">Adet:
<asp:textbox id="txtAdet"
runat="server" Width="68px"></asp:textbox>
<asp:button id="btnSatinAl"
runat="server" Text="Satn Al"></asp:button></P>
</TD>
</TR>
<TR>
<TD colSpan="2">
<P align="center">
<asp:Label id="lblMesaj"
runat="server"></asp:Label></P>
</TD>
</TR>
</TABLE>
</P>
</TD>
<TD width="150" bgColor="#0099ff" vAlign="top">
<uc1:yan id="Yan1"
runat="server"></uc1:yan></TD>
</TR>
<TR>
312 Modl 11:
using System.Data.OleDb ;
string kID;
private void Page_Load(System.Object sender,
System.EventArgs e)
{
If (Session["user"] == "")
{
Response.Redirect("Giris.aspx");
}
kID = Request.Params("kID");
'Response.Write(kID)
string connStr= "Provider=Microsoft.Jet.OleDB.4.0;+
Data Source=" + Server.MapPath("KitapDb.mdb");
comm.Parameters.Add("@kitapID",Convert.ToInt32(kID));
OleDbDataReader dr = OleDbDataReader();
try
{
conn.Open();
dr = comm.ExecuteReader();
if (dr.Read = True)
{
lblKitapAdi.Text = dr.Item("KitapAdi");
lblYazarAdi.Text = dr.Item("Yazar");
lblFiyat.Text = dr.Item("Ucret");
lblAciklama.Text = dr.Item("Aciklama");
imgResim.ImageUrl = "resimler/" +
dr.Item("Image");
}
dr.Close();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
If (conn.State == ConnectionState.Open)
{
Modul 11: 313
conn.Close();
}
}
}
comm.Parameters.Add("@MusteriID",
Session["musteriId"]);
comm.Parameters.Add("@SiparisTarihi",
DateTime.Now.ToShortDateString);
comm.Parameters.Add("@KitapID", CInt(kID));
comm.Parameters.Add("@Adet", txtAdet.Text);
int sonuc
try
{
conn.Open();
sonuc = comm.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
conn.Close();
}
if (sonuc = 1)
{
Response.Redirect("Satis.aspx");
}
DataGrid dgEncokSatanlar
<uc1:Ust id="Ust1"
runat="server"></uc1:Ust></TD>
</TR>
<TR>
<TD width="150" vAlign="top">
<uc1:kategori id="Kategori1"
runat="server"></uc1:kategori></TD>
<TD width="400" vAlign="top">
<P>
<TABLE id="Table2" cellSpacing="0"
cellPadding="0" width="350" align="center" border="0">
<TR>
<TD style="HEIGHT: 55px">
<P align="center">En ok
Satanlar</P>
</TD>
</TR>
<TR>
<TD>
<DIV align="center">
<asp:DataGrid
id="dgEncokSatanlar" runat="server"
AutoGenerateColumns="False" Width="253px" BorderWidth="1px"
BorderColor="#003333">
<HeaderStyle Font-
Bold="True"></HeaderStyle>
<Columns>
<asp:HyperLinkColumn
DataNavigateUrlField="KitapID"
DataNavigateUrlFormatString="Kitapdetay.aspx?KID={0}"
using System.Data.OleDb;
comm.Connection = conn;
}
}
}
}
</HEAD>
<body bgColor="#f0fff0">
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" cellSpacing="0" cellPadding="0"
width="700" align="center" border="0">
<TR>
<TD bgColor="#99ccff" colSpan="3"><uc1:ust
id="Ust1" runat="server"></uc1:ust></TD>
</TR>
<TR>
<TD width="150" vAlign="top"><uc1:kategori
id="Kategori1" runat="server"></uc1:kategori></TD>
<TD vAlign="top" align="center" width="400">
<asp:datalist id="dlKitap" runat="server"
RepeatColumns="2">
<ItemTemplate>
<table width="180">
<tr align="center">
<td>
<a
href='KitapDetay.aspx?kID=<%#
databinder.eval(Container.dataitem,"KitapID") %>'><img
border=0 src='resimler/<%#
databinder.eval(Container.dataitem,"Image") %>'>
</a>
</td>
</tr>
<tr align="center">
<td>
<%#
databinder.eval(Container.dataitem,"KitapAdi") %>
</td>
</tr>
<tr align="center">
<td>
<%#
databinder.eval(Container.dataitem,"Yazar") %>
</td>
</tr>
<tr align="center">
<td>
<%#
databinder.eval(Container.dataitem,"Ucret") %>
</td>
</tr>
</table>
</ItemTemplate>
</asp:datalist>
</TD>
<TD width="150" bgColor="#0099ff" vAlign="top">
<uc1:yan id="Yan1"
runat="server"></uc1:yan></TD>
</TR>
<TR>
<TD bgColor="#99ccff" colSpan="3"><uc1:alt
id="Alt1" runat="server"></uc1:alt></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
Modul 11: 319
using System.Data.OleDb
comm.Parameters.Add("@kID",
Convert.ToInt32(kategoriID));
Durum Ynetimi
ASP.NET, sunucuda uygulamaya ait zel bilgileri tutan ve sayfalar aras veri
aktarm gerekletiren bir altyap salar.
Modul 12: 323
rnein bir Login sayfasna Bilge kullanc ismiyle giri yapldktan sonra,
dier sayfalarda Merhaba Bilge mesajn verilebilir. Bu mesaj gstermek iin
Bilge kullanc ad State ynetimi ile bir deikende tutulmaldr.
Konu 1: Session
Login.aspx sayfas
Sayfam.aspx sayfas
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data
source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
Konu 2: Cookie
rnek:
Kullanc ad girilip Cookie yap butonuna tklannca kullanc tarafnda bir
cookie oluturuluyor. Cookie oku butonuna tklandnda ise oluturulan
cookie nesnesinden veri alnyor.
Cookie Trleri
ki tr Cookie vardr:
Temporary (Geici)
Persistent (Kalc)
Modul 12: 329
Konu 3: Application
Bu rnekte her bir yeni session aldnda, yani siteye her istek yapldnda
ziyareti says birer artrlmaktadr.
Application deikeni doldurulduktan sonra uygulama iinden armak iin
Application(degisken_ismi) ifadesi kullanlr.
Konu 4: Global.asax
Modl zeti
39.
Session niin kullanlr?
40. Cookie niin kullanlr?
41. Cookie trleri nelerdir?
42. Application niin kullanlr?
Modul 12: 335
Session kullanmak
AspEticaret isimli projeyi an.
UyeGiris web formunun Code Behind kodlar aadaki gibi olacaktr. UyeGiris
kod dosyas ierisindeki iaretli satrlar, veri taban ierisinden ekilen kaytlarn
session deikenlere aktarlmasn salar.
using System.Data.OleDb
string connStr =
Provider=Microsoft.Jet.OleDB.4.0;Data Source="
+ Server.MapPath("KitapDb.mdb");
if (dr.HasRows == True)
{
sonuc = True;
if (dr.Read == True )
{
Session["user"] = dr.Item("Email");
Session["ad"] = dr.Item("Ad");
Session["soyad"] = dr.Item("Soyad");
Session["musteriId"] = dr.Item("MusteriID");
}
}
else
{
sonuc = False;
}
dr.Close();
}
using System.Data.OleDb
string kID
private void Page_Load(System.Object sender,
System.EventArgs e)
{
if (Session["user"] == "" )
{
Response.Redirect("Giris.aspx");
}
kID = Request.Params("kID");
'Response.Write(kID)
string connStr =
"Provider=Microsoft.Jet.OleDB.4.0;Data Source=" +
"Server.MapPath("KitapDb.mdb");
OleDbConnection conn ;
conn.ConnectionString = connStr;
comm.Parameters.Add("@kitapID",Convert.ToInt32(kID));
OleDbDataReader dr = new OleDbDataReader();
Try
{
conn.Open();
dr = comm.ExecuteReader()
If (dr.Read == true)
{
lblKitapAdi.Text = dr.Item("KitapAdi");
lblYazarAdi.Text = dr.Item("Yazar");
lblFiyat.Text = dr.Item("Ucret");
lblAciklama.Text = dr.Item("Aciklama");
imgResim.ImageUrl = "resimler/" +
dr.Item("Image");
}
dr.Close();
{
If (conn.State = ConnectionState.Open)
{
conn.Close();
}
}
}
Ust kullanc kontrolunn Code Behind kodlar aadaki gibi olacaktr. Ust kod
dosyas ierisindeki iaretli satrlar, session deikenin deerini lblAd isimli
etikete yazmaktadr.