none
Dropdownlist doldururken listedeki itemlerden gerekli olanı seçme RRS feed

  • Soru

  • Merhaba. Ddl ye db den veri çekiyorum ve kaydetme işlemi yapıyorum. Sonra bu kayda girildiğinde güncelleme işlemi yapmam gerekiyor ve başka bir ddl de kaydı yaparken seçmiş olduğu itemi getiriyorum. Ancak diğer itemler gelmiyor. Aşağıdaki kodla bunu yapmaktayım :

     SqlConnection conn;
            SqlCommand comm;
            SqlDataReader reader;
    
            string constr = ConfigurationManager.ConnectionStrings["xyz"].ConnectionString;
            conn = new SqlConnection(constr);
            comm = new SqlCommand("select AnaBirim from AnaBirim AB inner join TBL_PERSONEL P on P.ANABIRIM=AB.LOGICALREF  " +
             "where P.ADISOYADI=@logref order by AnaBirim asc ", conn);
            comm.Parameters.AddWithValue("@logref", lbladi.Text);
            comm.CommandType = CommandType.Text;
            try
            {
    
                conn.Open();
                reader = comm.ExecuteReader();
                
                
                ddl_vw2AnaBirim.DataSource = reader;
                ddl_vw2AnaBirim.DataValueField = "AnaBirim";
                ddl_vw2AnaBirim.DataTextField = "AnaBirim";
                ddl_vw2AnaBirim.DataBind();
                reader.Close();
            }
    
            catch
            {
                Response.Write("Bir hata oluştu");
            }
    
            finally
            {
                conn.Close();
            }

    Yani benim istediğim kayıt yaparken seçtiği item seçili olsun ve diğer itemler de görünsün.
    11 Temmuz 2014 Cuma 07:37

Yanıtlar

Tüm Yanıtlar

  • ddlJobStatus.SelectedValue = ddlJobStatus.Items.FindByValue("kaydederkenki DeğerAmaStringOlarak").Value;


    Mail Gönder

    11 Temmuz 2014 Cuma 07:44
  • Soner Bey zaten kaydederken seçtiği geliyor ddl ye, ancak diğer seçebilecekleri gelmiyor. Yanlış anlamadıysam sizinki kaydettiğini getirmek için doğru mu acaba ? Denedim gelmedi çünkü.
    11 Temmuz 2014 Cuma 07:48
  • Aynen hocam. Kaydettiğini getirmek için. Siz de öyle yazmışsınız zaten. Ki hepsi de gelir ve bu seçtiğini seçili olarak atar. Yalnız bunu dropdownu doldurduktan sonra yazın.

    Mail Gönder

    11 Temmuz 2014 Cuma 07:53
  • Ancak şöyle bir sıkıntı var, ben adını parametre olarak gönderiyorum ve orada ki anabirim kolonunu alıyorum. Yani bir tek o geliyor. Tam anlatamadım galiba :) çalışmadı yine çünkü benim parametre kurgumda bir sıkıntı var. Adına göre anabirim geliyor hepsi dolmuyor. Hepsini doldurduğumda dediğiniz kodu yazdım seçmedi. Çünkü parametre kullanamadım hepsini doldururken. Bu şekilde denedim mesela :

    SqlConnection conn;
            SqlCommand comm;
            SqlDataReader reader;
    
            string constr = ConfigurationManager.ConnectionStrings["xyz"].ConnectionString;
            conn = new SqlConnection(constr);
            comm = new SqlCommand("select AnaBirim from AnaBirim order by AnaBirim asc", conn);
            try
            {
    
                conn.Open();
                reader = comm.ExecuteReader();
    
                ddl_vw2AnaBirim.DataSource = reader;
                ddl_vw2AnaBirim.DataValueField = "AnaBirim";
                ddl_vw2AnaBirim.DataTextField = "AnaBirim";
                ddl_vw2AnaBirim.DataBind();
                reader.Close();
                ddl_vw2AnaBirim.SelectedValue = ddl_vw2AnaBirim.Items.FindByValue("ANABIRIM").Value;
            }
    
            catch
            {
                Response.Write("Bir hata oluştu");
            }
    
            finally
            {
                conn.Close();
            }

    11 Temmuz 2014 Cuma 08:02
  • Şunu da belirteyim ana birim için ayrı personel için ayrı tablom var. ddl ana birim tablosundan doluyor. Güncelleme için gireceğim personel tablosunda ana birim kolonundaki değer geliyor.
    11 Temmuz 2014 Cuma 08:04
  • Galiba anabirim tablosundaki tüm anabirimleri göstertip ordan adini parametre göndererek seçili olan anabirimi seçili olarak göstermem lazım ama kodlara dökemiyorum bunu.
    • Düzenleyen selow 11 Temmuz 2014 Cuma 08:16
    11 Temmuz 2014 Cuma 08:15
  • İki sorgunuz olmalı.

    1) Mesela bu dropdownu doldurmak için sorgu.(Zaten yazmışsınız)

    2) Seçili elemanı getirecek sorgu.Örneğin :

    var command=new SqlCommand("Select AnaBirim from KaydedilenTablo where KaydedilenKisiId=@id",conn);
    command.Parameters.AddWithVale("@id",kaydedilenKisininIdsi);




    Mail Gönder


    11 Temmuz 2014 Cuma 08:20
  • SqlConnection conn;
            SqlCommand comm;
            SqlDataReader reader;
    
            string constr = ConfigurationManager.ConnectionStrings["xyz"].ConnectionString;
            conn = new SqlConnection(constr);
            comm = new SqlCommand("select AnaBirim from AnaBirim order by AnaBirim asc", conn);
            var command = new SqlCommand("select AnaBirim from AnaBirim AB inner join TBL_PERSONEL P on P.ANABIRIM=AB.LOGICALREF  " +
            "where P.ADISOYADI=@logref order by AnaBirim asc ", conn);
            command.Parameters.AddWithValue("@logref", lblHdrPersonelAdıAck);
            try
            {
    
                conn.Open();
                reader = comm.ExecuteReader();
    
                ddl_vw2AnaBirim.DataSource = reader;
                ddl_vw2AnaBirim.DataValueField = "AnaBirim";
                ddl_vw2AnaBirim.DataTextField = "AnaBirim";
                ddl_vw2AnaBirim.DataBind();
                reader.Close();
                ddl_vw2AnaBirim.SelectedValue = ddl_vw2AnaBirim.Items.FindByValue("AnaBirim").Value;
            }
    
            catch
            {
                Response.Write("Bir hata oluştu");
            }
    
            finally
            {
                conn.Close();
    
    ]
    Malesef olmadı, yukarıdaki gibi düzenledim kodları



    • Düzenleyen selow 11 Temmuz 2014 Cuma 08:34
    11 Temmuz 2014 Cuma 08:34
  • command'tan gelecek olan veriyi ddl ye selectedvalue olarak atayabilir miyim ? Dediğiniz yöntemde ya eksik birşey yazdım yada yanlış yere yazdım çözemedim sorunu.
    11 Temmuz 2014 Cuma 08:55
  • void DrpAnaBirimDoldur()
    {
    SqlConnection conn;
            SqlCommand comm;
            SqlDataReader reader;
    
            string constr = ConfigurationManager.ConnectionStrings["xyz"].ConnectionString;
            conn = new SqlConnection(constr);
            comm = new SqlCommand("select AnaBirim from AnaBirim AB inner join TBL_PERSONEL P on P.ANABIRIM=AB.LOGICALREF  " +
             "where P.ADISOYADI=@logref order by AnaBirim asc ", conn);
            comm.Parameters.AddWithValue("@logref", lbladi.Text);
            comm.CommandType = CommandType.Text;
            try
            {
    
                conn.Open();
                reader = comm.ExecuteReader();
                
                
                ddl_vw2AnaBirim.DataSource = reader;
                ddl_vw2AnaBirim.DataValueField = "AnaBirim";
                ddl_vw2AnaBirim.DataTextField = "AnaBirim";
                ddl_vw2AnaBirim.DataBind();
                reader.Close();
            }
    
            catch
            {
                Response.Write("Bir hata oluştu");
            }
    
            finally
            {
                conn.Close();
            }
    }

    Bu işlemle verileri çektik.

    void DdlAnaBirimSeciliAta()
    {
    SqlConnection conn;
            SqlCommand comm;
            SqlDataReader reader;
    
            string constr = ConfigurationManager.ConnectionStrings["xyz"].ConnectionString;
            conn = new SqlConnection(constr);
            comm = new SqlCommand("select AnaBirim from TBL_PERSONEL p WHERE p.PersonelId=@seciliPersonelIdsi",conn);
            comm.Parameters.AddWithValue("@seciliPersonelIdsi",id );
            comm.CommandType = CommandType.Text;
            try
            {
    
                conn.Open();
                reader = comm.ExecuteReader();
                
                
                
                ddl_vw2AnaBirim.SelectedValue = ddl_vwAnabirim.Items.FindByValue(reader["AnaBirim"].ToString()).Value;;
                reader.Close();
            }
    
            catch
            {
                Response.Write("Bir hata oluştu");
            }
    
            finally
            {
                conn.Close();
            }
    }

    Bu işlemle de seçili elemanı atadık.


    Mail Gönder



    11 Temmuz 2014 Cuma 09:12
  • Malesef atama fonkisyonu catch bloğuna düşüyor.

    Bu şekilde  yazdım: 

     void DdlAnaBirimSeciliAta()
    {
    SqlConnection conn;
            SqlCommand comm;
            SqlDataReader reader;
    
            string constr = ConfigurationManager.ConnectionStrings["xyz"].ConnectionString;
            conn = new SqlConnection(constr);
            comm = new SqlCommand("select AnaBirim from AnaBirim AB inner join TBL_PERSONEL P on P.ANABIRIM=AB.LOGICALREF  " +
             "where P.ADISOYADI=@adi order by AnaBirim asc ", conn);
            comm.Parameters.AddWithValue("@adi", lbladi.Text.ToString());
            comm.CommandType = CommandType.Text;
            try
            {
    
                conn.Open();
                reader = comm.ExecuteReader();
                
                ddl_vw2AnaBirim.SelectedValue = ddl_vw2AnaBirim.Items.FindByValue(reader["AnaBirim"].ToString()).Value;;
                reader.Close();
            }
    
            catch
            {
                Response.Write("Bir hata oluştu");
            }
    
            finally
            {
                conn.Close();
            }
    }


    11 Temmuz 2014 Cuma 09:36
  • Lütfen geliştirme aşamasında try catch kullanmayın. Hata nedir?

    Mail Gönder

    11 Temmuz 2014 Cuma 09:41
  • try bloğunu kaldırdım hata budur : 

    An exception of type 'System.InvalidOperationException' occurred in System.Data.dll but was not handled in user code

    Additional information: Invalid attempt to read when no data is present.

    Burada alıyorum.

    ddl_vw2AnaBirim.SelectedValue = ddl_vw2AnaBirim.Items.FindByValue(reader["AnaBirim"].ToString()).Value;
                reader.Close();


    • Düzenleyen selow 11 Temmuz 2014 Cuma 09:45
    11 Temmuz 2014 Cuma 09:43
  • if(reader.Read)
    {
    ddl_vw2AnaBirim.SelectedValue = ddl_vw2AnaBirim.Items.FindByValue(reader.GetValue(0).ToString()).Value;
    }



    Mail Gönder

    • Yanıt Olarak İşaretleyen selow 11 Temmuz 2014 Cuma 10:11
    11 Temmuz 2014 Cuma 09:51
  • Çok teşekkür ederim hocam, şimdi oldu :)
    11 Temmuz 2014 Cuma 10:11