11 Aralık 2008

Veri Kaynağı Olan DropDownList'e Item Ekleme

DropDownList kontrolüne veritabanından getirilen kayıtları yüklememiz durumunda çoğu zaman ilk seçeneğin kullanıcıyı bilgilendirecek bir metin olmasını isteriz. "Bir şehir seçin", "Bir kategori seçin"... gibi bir seçeneğin ilk item olması, devamında da veritabanından gelen item'ların sıralanması eminim ki her uygulamada ihtiyaç olan bir durumdur. Tabi ki veritabanındaki Sehirler tablosunda "Bir şehir seçin" diye bir kayıt eklemek mantıklı olmayacağına göre farklı bir çözüm yolu üretmek gerekli! Sorunu SQL Server tarafında çözmek istersek UNION ifadesi kullanılabilir. Fakat bu yazımda biraz daha farklı bir yoldan bahsetmek istiyorum.

Yapacağımız işlem son derece basit ve kullanışlı bir çözüm yolu olacak. İlk olarak bilgilendirme metnini DropDownList kontrolüne görsel kısımdan ListItem olarak ekliyoruz. Items koleksiyonuna bilgilendirme metnini ekliyoruz. Ardından DropDownList'in AppendDataBoundItems özelliğini true olarak değiştiriyoruz. Eklediğimiz seçenek artık DropDownList kontrolüne item olarak eklenecektir.

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True"

    DataSourceID="SqlDataSource1" DataTextField="SehirAdi" DataValueField="SehirId">

    <asp:ListItem Value="-1">Bir şehir seçin</asp:ListItem>

</asp:DropDownList>

AppendDataBoundItems

UNION, UNION ALL ifadelerine alternatif olacak, aklınızda bulunması gereken bir ipucu...

3 yorum:

Alper dedi ki...

Hocam alternatif olarak ListItemCollection.Insert methodunu da kullanabiliriz. Insert ile ListItem'in ekleneceği index verilebiliyor, 0 verirsek en üste eklemiş oluruz.

DropDownList'in DataBound eventine;

protected void ddl_DataBound(object sender, EventArgs e)
{
ddl.Items.Insert(0, new ListItem("Seçiniz", "0"));
}

Uğur UMUTLUOĞLU dedi ki...

Daha önceden test etmedim ama DataSource olarak veri bağlandığında da düzgün şekilde çalışıyorsa bu yöntemde oldukça kullanışlı. Teşekkür ederim Alper paylaşımın için :)

Adsız dedi ki...

Alpercim ben denedim ama hocamım verdiği şekil daha sağlıklı oluyor. senin dediğin web uygulamalarında güzel olur