En iyi yanıtlayıcılar
Dropdownlist - Text ve Selectedvalue özelliklerini kullanma

Soru
-
Merhaba,
İletişim formunda kullanıcıya hangi mail adresine mail göndermesini seçmesi için dropdownlist ile mailleri gösterdim. Mailler iletisim tablomda "Email1 - Email2 - Email3 - Email4 - Email5" alanlarından çekiliyor.
Yapmak istediğim şu : Dropdownlist'de mail adresleri listeleniyor ama ben mail adresleri yerine şube isimlerini listelemek istiyorum. Kullanıcı Oslo şubesini seçtiyse mail oslo@mail.com adresine gidecek. İletişim tabloma 5 adet yeni alan daha ekledim "EmailText1 - EmailText2 - EmailText3 - EmailText4 - EmailText5" bu alanlarada mail adreslerinin şube isimlerini girdim. Dropdownlist'in text alanına Şube isimlerini - Selectedvalue kısmına ise mail adreslerini çekmeye çalıştım bir çok hata oluştu bende kodları eski haline aldım. Şuan çalışan kodlarım şöyle :
drp_email.Items.Clear(); SqlConnection conn = system.baglan(); string Sorgu; Sorgu = "SELECT ISNULL(Email,'') +'/'+ ISNULL(Email1,'') +'/'+ ISNULL(Email2,'') +'/'+ ISNULL(Email3,'') +'/'+ ISNULL(Email4,'') as mailler FROM Iletisim Where Sira='1' and Dil='7'"; //if (string.Compare(dil, "") != 0) // Sorgu = Sorgu + " and Dil=" + dil + "'"; //else // Sorgu = Sorgu + " and Dil='2'"; SqlCommand comm = new SqlCommand(Sorgu, conn); try { string reader = comm.ExecuteScalar().ToString(); drp_email.DataSource = reader.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); drp_email.DataBind(); conn.Close(); } catch { Response.Write("Bir hata oluştu"); } finally { conn.Close(); }
Yanıtlar
Tüm Yanıtlar
-
-
-
drp_email.DataMember = "emailalanınınadı"; drp_email.ValueMember = "görünecekalanınadı";
Özelliklerini kullanacaksam sorgumda ki
EskiSorgu = "SELECT ISNULL(Email,'') +'/'+ ISNULL(Email1,'') +'/'+ ISNULL(Email2,'') +'/'+ ISNULL(Email3,'') +'/'+ ISNULL(Email4,'') as mailler FROM Iletisim Where Sira='1' and Dil='7'" YeniSorgu = "SELECT ISNULL(Email,'') +'/'+ ISNULL(Email1,'') +'/'+ ISNULL(Email2,'') +'/'+ ISNULL(Email3,'') +'/'+ ISNULL(Email4,'') +'/'+ ISNULL(EmailText1,'') +'/'+ ISNULL(EmailText2,'') +'/'+ ISNULL(EmailText3,'') +'/'+ ISNULL(EmailText4,'') +'/'+ ISNULL(EmailText5,'') as mailler FROM Iletisim Where Sira='1' and Dil='7'" Olarak yeni sorgumu değiştireceğim. Bu yapı ile çalıştırabilirmiyim ?
-
-
Ya kusura bakma kafadan yazınca sallama olmuş; :)
drp_email.DataTextField = "yer"; drp_email.DataValueField = "mailler";
yanlız sorgunda tek alan var galiba görünecek alan yok, yani "Oslo" hangi alan onuda sorguda çekin
select ....... as mailler, yer from FROM Iletisim Where Sira='1' and Dil='7'
gibi
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
-
drp_email.Items.Clear(); SqlConnection conn = system.baglan(); string Sorgu; string Sorgu1; Sorgu = "SELECT ISNULL(Email,'') +'/'+ ISNULL(Email1,'') +'/'+ ISNULL(Email2,'') +'/'+ ISNULL(Email3,'') +'/'+ ISNULL(Email4,'') as mailler FROM Iletisim Where Sira='1' and Dil='7'"; Sorgu1 = "SELECT ISNULL(EmailText1,'') +'/'+ ISNULL(EmailText2,'') +'/'+ ISNULL(EmailText3,'') +'/'+ ISNULL(EmailText4,'') +'/'+ ISNULL(EmailText5,'') as mailtext FROM Iletisim Where Sira='1' and Dil='7'"; //if (string.Compare(dil, "") != 0) // Sorgu = Sorgu + " and Dil=" + dil + "'"; //else // Sorgu = Sorgu + " and Dil='2'"; SqlCommand comm = new SqlCommand(Sorgu, conn); SqlCommand comm2 = new SqlCommand(Sorgu1,conn); try { string reader = comm.ExecuteScalar().ToString(); string reader1 = comm2.ExecuteScalar().ToString(); //drp_email.DataSource = reader.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); drp_email.DataTextField = reader1.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); drp_email.DataValueField = reader.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); drp_email.DataBind(); conn.Close(); } catch { Response.Write("Bir hata oluştu"); } finally { conn.Close(); }
Yukarıda ki gibi bir yapı oluşturmaya çalıştım ama sonuç başarısız oldu :(
-
Bence sizin veritabanı tasarımınız iyi değil öncelikle. IletisimMailleri adında bir tablo oluşturun. Mail ve Sube şeklinde alanları olsun. Tabloya iletişim maillerini kaydedin:
Mail Sube
info@abc.com Merkez
satis@abc.com Satış
ik@abc.com İnsan Kaynaklarıgibi. Daha sonra uygulamanızda bu tabloyu class yapısı olarak gerçekleyin:
public class IletisimMailleri { public string Mail { get; set; } public string Sube { get; set; } }
Veritabanından çektiğiniz verileri bu class tan oluşturuğunuz bir liste (List<IletisimMailleri>) içerisine yerleştirdikten sonra bu listeyi DropDownList1.DataSource özelliğine atayın. Properties penceresinden veya kodla DrowDownList1.DataTextField = "Sube", DropDownList1.DataValueField = "Mail" şeklinde ayarladığınızda istediğiniz olacaktır.