none
dropdownlist sıkıntısı RRS feed

  • Soru

  • sayfamda 2 tane dropdownlist kontrolüm var. Şimdi ben birincisinden seçim yaptığımda ikinciyi doldurmak istiyorum. ardından da bu 2. dropdown dan seçilen değere göre işlem yaptırıcam. Birinciden seçim yaptıktan sonra 2.dropdown doluyor. Ancak bundan sonra 2.dropdown seçim yaptırmıyor. Ama dropdown içersinde elemanlar doluyor bunu görebiliyorum. Nasıl düzeltebilirim.

    2 dropdownlist in de Enable AutoPost özelliklerini işaretledim.

    2.dropdownlist in Enable AutoPost özelliğini işaretlemediğim zaman sıknıtı ortadan kalkıyor ama bu seferde 2.dropdown nun seçili item ın value sunu alamamış oluyorum.


    ozdemiryazilim



    • Düzenleyen pcci 21 Aralık 2012 Cuma 17:56
    21 Aralık 2012 Cuma 17:51

Yanıtlar

  • önemli nokta: if(!isPostBack) {} arasında yazıcaksın dropdown doldurma işlemlerini page loadda

    void iller()

    { SqlConnection Baglanti = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Baglan_DB"].ToString()); Baglanti.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = Baglanti; cmd.CommandText = "select * from iller"; dropdownil.DataSource = cmd.ExecuteReader(); dropdownil.DataTextField = "ilAdi"; dropdownil.DataValueField = "ilID"; dropdownil.DataBind(); cmd.Dispose(); Baglanti.Close(); }

    bu şekilde bir metod yaz, sonra page_loada gel,

    if(!isPostBack)
    {
    
    iller();
    SqlConnection Baglanti = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Baglan_DB"].ToString());
            Baglanti.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = Baglanti;
            cmd.CommandText = "select * from ilceler where ilid=@id";
            cmd.Parameters.AddWithValue("@id",dropdownil.selectedItem.Value);
            dropdownilce.DataSource = cmd.ExecuteReader();
            dropdownilce.DataTextField = "IlceAdi";
            dropdownilce.DataValueField = "IlceID";
            dropdownilce.DataBind();
            cmd.Dispose();
            Baglanti.Close();
    }

    kodlarını yaz, sonra dropdownil 'in selectedindexchanged eventına gel

    SqlConnection Baglanti = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Baglan_DB"].ToString());
            Baglanti.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = Baglanti;
            cmd.CommandText = "select * from ilceler where ilid=@id";
            cmd.Parameters.AddWithValue("@id",dropdownil.selectedItem.Value);
            dropdownilce.DataSource = cmd.ExecuteReader();
            dropdownilce.DataTextField = "IlceAdi";
            dropdownilce.DataValueField = "IlceID";
            dropdownilce.DataBind();
            cmd.Dispose();
            Baglanti.Close();
    }

    kodunu buraya da ekle.

    Burda dikkat etmen gereken husus dropdownil 'in autoPostBack özelliği true olucak, yukardaki kodlarda veritabanı bilgilerini, sql sorgunu,datatext ve datavaluefiledlarını kendine göre düzenle sorunsuz çalışacaktır



    • Düzenleyen ulusoyy 21 Aralık 2012 Cuma 18:21
    • Yanıt Olarak İşaretleyen pcci 21 Aralık 2012 Cuma 19:06
    21 Aralık 2012 Cuma 18:06

Tüm Yanıtlar

  • önemli nokta: if(!isPostBack) {} arasında yazıcaksın dropdown doldurma işlemlerini page loadda

    void iller()

    { SqlConnection Baglanti = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Baglan_DB"].ToString()); Baglanti.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = Baglanti; cmd.CommandText = "select * from iller"; dropdownil.DataSource = cmd.ExecuteReader(); dropdownil.DataTextField = "ilAdi"; dropdownil.DataValueField = "ilID"; dropdownil.DataBind(); cmd.Dispose(); Baglanti.Close(); }

    bu şekilde bir metod yaz, sonra page_loada gel,

    if(!isPostBack)
    {
    
    iller();
    SqlConnection Baglanti = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Baglan_DB"].ToString());
            Baglanti.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = Baglanti;
            cmd.CommandText = "select * from ilceler where ilid=@id";
            cmd.Parameters.AddWithValue("@id",dropdownil.selectedItem.Value);
            dropdownilce.DataSource = cmd.ExecuteReader();
            dropdownilce.DataTextField = "IlceAdi";
            dropdownilce.DataValueField = "IlceID";
            dropdownilce.DataBind();
            cmd.Dispose();
            Baglanti.Close();
    }

    kodlarını yaz, sonra dropdownil 'in selectedindexchanged eventına gel

    SqlConnection Baglanti = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Baglan_DB"].ToString());
            Baglanti.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = Baglanti;
            cmd.CommandText = "select * from ilceler where ilid=@id";
            cmd.Parameters.AddWithValue("@id",dropdownil.selectedItem.Value);
            dropdownilce.DataSource = cmd.ExecuteReader();
            dropdownilce.DataTextField = "IlceAdi";
            dropdownilce.DataValueField = "IlceID";
            dropdownilce.DataBind();
            cmd.Dispose();
            Baglanti.Close();
    }

    kodunu buraya da ekle.

    Burda dikkat etmen gereken husus dropdownil 'in autoPostBack özelliği true olucak, yukardaki kodlarda veritabanı bilgilerini, sql sorgunu,datatext ve datavaluefiledlarını kendine göre düzenle sorunsuz çalışacaktır



    • Düzenleyen ulusoyy 21 Aralık 2012 Cuma 18:21
    • Yanıt Olarak İşaretleyen pcci 21 Aralık 2012 Cuma 19:06
    21 Aralık 2012 Cuma 18:06
  • dediğiniz şekilde yaptım bende kodları aynısı sayılır. Ben pageload kısmına bir breakpoint atarak ilerlediğimde if(!ispostback) kısmından sonra if içersine girmiyor.

    Ben projemde usercontroleri kullanarak çalışıyorum. Ondan dolayı sayfanın post olma olayında bir sıkıntı olabilir mi? Yani .aspx sayfası ile çalışmıyorum bu kısımda.


    ozdemiryazilim

    21 Aralık 2012 Cuma 18:28