DropDownList

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

DropDownList

Mesaj gönderen Fatih! »

DropDownList, ComboBox Ve DbLookUpCombobox Bileşenlerinin özelliklerini taşıyan Bir Bileşendir
Bileşeni Forma ekledikten Sonra Object Inspectordan “Item” özelliğine tıklayarak Bileşene Elemanları ekleyebilirsiniz.

Resim

Yukarıdaki Resimde Görüldüğü gibi ayarları yapıyoruz.
“Add” buttonuna basarak ekleman ekleyebilir “Remove” Buttonuna tılklayarak elemanı silebilir, Ok işaretleri ile de Elemanların sırasını değiştirebilirsiniz. Eklediğiniz elemanın “Selected” özelliğini “True” yaparsanız sayfa açılırken o eleman seçili olarak gelir. Text özelliği Kullanıcının Göreceği değerken Value kısmı Programcının işleyeceği değerdir. DbLookUpComboBox gibi.
“DropDownList1.SelectedValue” şeklinde seçili elemanın değerini alabilirsiniz.

Genellikle üyelik sistemlerinde (Özellikle Yabancı Sitelerde) olan bir olay vardır; size ülkenizi seçmenizi söylerler ve siz ülkenizi seçtiğinizde bir alttaki dropdownliste seçtiğiniz ülkeye ait illerin bulunduğu yeni bir dropdownlist belirir. İşte bu makalemizde bu senaryoyu ASP.NET üzerinde örnekleyeceğiz.
Ancak yapacağımız örneklemede ülkeler ve bu ülkelere ait illeri bulmak zor olacağı için, biz il ve ilçeler üzerinde örnek yapacağız.
Seçilen ile göre içeriği değişecek olan bir dropdownlist i nasıl DataBind edeceğimizi inceleyeceğiz.
Veri Tabanı Yapısı ve Veriler

Resim

Projemize iki adet DropDownLsit ekliyoruz. Bunlardan biri, DDLIller diğeri ise DDLIlceler olarak IDlerini değiştiriyoruz.
DDLIller IDli DropDownlistimizin AutoPostBack Propertysini True yapıyoruz, böylece departman seçilir seçilmez, hiç bir butona basmaksızın, sayfamız servera gidecek ve gerekli işlemleri yapıp geri dönecektir.
Event olarak ise, DDLIller IDli DropdownListimizin SelectedIndexChanged Eventini ve Page_Load Eventini kullanacağız.
Aşağıdaki Değişkenleri Global olarak tanımlayın.

Kod: Tümünü seç

var
MyConnect:oleDbConnection;
MyAdapter:oleDbDataAdapter;
MyDataset:DataSet;
Kodlarımız aşağıdki gibi olmalı.

Kod: Tümünü seç

procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs);
begin
//verilemizi bağlıyoruz.(PostBack değilse)
if not (IsPostBack) then
Begin
MyConnect:=sQLConnection.Create('Server=localhost;Database=FatihDB;uid=sa;pwd=;');
MyAdapter:=SQLDataAdapter.Create('Select * From IL',MyConnect);
MyDataset:=Dataset.Create;
MyAdapter.Fill(MyDataset,'IL');
//İller DropdownListinin dataSourcesini Göster
DDLIller.DataSource:=MyDataset.Tables['IL'];
//İller DropdownListte kullanıcının göreceği bölüme İller Alanını göster
DDLIller.DataTextField := 'ADI';
//İller DropdownListte programcının işleyeceği bölüme İl Kodu Alanını göster
DDLIller.DataValueField :='IDNO';
// Gösterilen Alanlarsdaki Değeri DropdownListe Doldur
DDLIller.DataBind;
End;
end;

Kod: Tümünü seç

procedure TWebForm1.DDLIller_SelectedIndexChanged(sender: System.Object; e: System.EventArgs);
begin
MyConnect:=sQLConnection.Create('Server=localhost;Database=FatihDB;uid=sa;pwd=;');
MyAdapter:=SQLDataAdapter.Create('Select * From ILCE WHERE IL_IDNO='+#39+DDLIller.SelectedValue+#39,MyConnect);
MyDataset:=Dataset.Create;
MyAdapter.Fill(MyDataset,'ILCE');
DDLIlceler.DataSource:=MyDataset.Tables['ILCE'];
DDLIlceler.DataTextField := 'ADI';
DDLIlceler.DataValueField :='IDNO';
DDLIlceler.DataBind;
end;
Kodlamayı ve senaryoyu inceleyecek olursak;
Sayfamız ilk kez yüklendiğinde, Oluşturmuş olduğumuzDropDownListe iller Dolduruluyor, IsPostBack ile kontrol edip, sadece sayfa ilk yüklendiğinde çalışmasını sağlıyoruz.
Eğer IsPostBack kontrolünü yapmasaydık, sayfa her servera gidip geldiğinde, DropDownList tekrar DataBind olacaktı ve buda DropDownList deki verilerin sürekli tekrar etmesine yol açacaktı.
IsPostBack şartı kontrol edildikten sonra, veritabanımıza bağlantı kurup IL isimli tablodan IDNO ve Adi fieldlerini DataAdapter sayesinde bir DataSet e atıyoruz.
DDLIller isimli dropDownList imizin DataSource u nu, oluşturduğumuz DataSet olarak belirleyip, DDLIller a ait TextField ve Valuefield alanlarını tanımlıyoruz. Ve en sonunda DataBind ediyoruz.
Böylelikle sayfamız açılmış ve ilk dropdownlistimizde, yani DDLIller da veritabanımızda kayıtlı olan tüm İller listelenmiştir. DDLIller nesnemizin AutoPostBack propertysini True olduğu için, bu DropDownList deki seçilen Maddenin değişmesi durumunda, sayfa hemen servera gidecek ve SelectedIndexChanged Eventi çalışacaktır.
SelectedIndexChanged eventinde ise Page_LOad olayında olduğu gibi, veritabanı bağlantısı kurulup, DDLIller nesnesinden seçilen departmana bağlı olarak gerekli personel verileri çekilip bir DataSet atılmaktadır.
Bu sefer DDLIlceler isimli DropDownList in DataSource, DataTextField ve DataValueField Propertyleri tanımlanıp, DataBind Edilmekte.
Sonuç olarak, seçilen departmana bağlı bir şekilde İlçeler listesi değişmektedir.
Sonuç

Resim
En son Fatih! tarafından 26 Şub 2007 04:24 tarihinde düzenlendi, toplamda 3 kere düzenlendi.
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Syn Forum yönetici arkadaşlar syn FAOsoft makalerindeki resimlerleri düzenleyebilirseniz çok memnun olacağım bu makalede de ben manzara resmi görüyorum :roll:
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Sanırım bağlantılarda bir hata var bende de bir otoban çıkıyor :roll:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

Resim
halledeyim
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Sayın Fatih hocam bu anlattığınız makalenin örnek projesini yayınlarsanız çok sevirim çünkü malalenizi şahsen ben yapamadım
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Fatih hocam çok yoğunsunuz biliyorum ama

Kod: Tümünü seç

MyConnect:=sQLConnection.Create('Server=localhost;Database=FatihDB;uid=sa;pwd=;');
de FatihDB bağlantısını çözemedim ben projemde C:\Inetpub\wwwroot\IL klasörünün altında Data.mdb var

Kod: Tümünü seç

MyConnect:=sQLConnection.Create('Server=localhost;Database=IL\Data.mdb;uid=sa;pwd=;');
olarak düzenliyorum
[code[Pascal Error] WebForm1.pas(93): E2010 Incompatible types: 'OleDbConnection' and 'SqlConnection'
[Pascal Error] WebForm1.pas(94): E2250 There is no overloaded version of 'Create' that can be called with these arguments
[Pascal Error] WebForm1.pas(119): E2003 Undeclared identifier: 'MyConnect'
[Pascal Error] WebForm1.pas(120): E2003 Undeclared identifier: 'MyAdapter'
[Pascal Error] WebForm1.pas(120): E2250 There is no overloaded version of 'Create' that can be called with these arguments
[Pascal Error] WebForm1.pas(121): E2003 Undeclared identifier: 'MyDataset'
[Pascal Error] WebForm1.pas(122): E2066 Missing operator or semicolon
[Pascal Error] WebForm1.pas(123): E2066 Missing operator or semicolon
[Pascal Fatal Error] IL.dpr(21): F2063 Could not compile used unit 'WebForm1.pas'[/code]

hatası veriyor Database=????? bağlantısı nasıl yazılıyor.Teşekkürler
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

o bağlantı MS SQL Server için
Cevapla