none
Dropdownlist - Text ve Selectedvalue özelliklerini kullanma RRS feed

  • 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();
            }

    3 Temmuz 2013 Çarşamba 06:14

Yanıtlar

  • bind etmeden önce;

    drp_email.DataMember = "emailalanınınadı";
    drp_email.ValueMember = "görünecekalanınadı";

    şeklinde yapabilirsin;


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    • Yanıt Olarak İşaretleyen SerkanKLC 3 Temmuz 2013 Çarşamba 12:59
    3 Temmuz 2013 Çarşamba 06:48
    Moderatör

Tüm Yanıtlar

  • bind etmeden önce;

    drp_email.DataMember = "emailalanınınadı";
    drp_email.ValueMember = "görünecekalanınadı";

    şeklinde yapabilirsin;


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    • Yanıt Olarak İşaretleyen SerkanKLC 3 Temmuz 2013 Çarşamba 12:59
    3 Temmuz 2013 Çarşamba 06:48
    Moderatör
  • Post işlemi gerçekleştiriyorsanız eğer post edilen sayfada Dropdownlist değeri gelmiyor mu ?

    3 Temmuz 2013 Çarşamba 09:30
  • 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 ?

    3 Temmuz 2013 Çarşamba 13:29
  • Bu arada 

    drp_email.ValueMember = "görünecekalanınadı";

    diye bir özellik yok drp'nin yani bende çıkmıyor.

    3 Temmuz 2013 Çarşamba 14:13
  • 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
    MCC

    3 Temmuz 2013 Çarşamba 14:49
    Moderatör
  •         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 :(

    4 Temmuz 2013 Perşembe 06:25
  • 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.

    4 Temmuz 2013 Perşembe 16:06