Как вставить другое значение со списком selectedindex в базу данных?

#c#

#c#

Вопрос:

В моем проекте у меня есть поле со списком стран (PaysCmBx0), которое заполняется из таблицы базы данных стран [Pays], столбец [pays], что я хочу сделать, когда я выбираю страну в поле со списком, он вставляет токен кода альфа-страны из столбца кода альфа-страны [Alpha2] в другой таблице (пример: Соединенные Штаты = США).

поэтому, когда я выбираю страну из выпадающего списка, она ничего не делает, она вводит то же значение.

Моя таблица выглядит так:

         [Aplha2]       [Pays]
         GB           United Kingdom
         IM           Isle of Man
         TZ           United Republic Of Tanzania
         US           United States
         BF           Burkina Faso
         UY           Uruguay
         UZ           Uzbekistan
  

вот мой код :

   void Fillcombo()
    {

        string Query = "SELECT * FROM Pays";


        SqlCommand cmd = new SqlCommand(Query, con);
        SqlDataReader myRead;

        try
        {
            con.Open();

            myRead = cmd.ExecuteReader();

            while (myRead.Read())
            {
                string sName = myRead["Pays"].ToString();
                PaysCmBx0.Items.Add(sName);
            }

            con.Close();
        }
        catch (Exception exc)
        {

            MessageBox.Show(exc.Message);
        }


    }



     private void AddBtn_Click(object sender, EventArgs e)
    {


        try
        {                 
                string Query = "INSERT INTO [dbo].[Adresses] ([idParent],[Type] ,[Adresse0],[Adresse1],[Adresse2],[CPT],[Ville],[Pays]) VALUES ('" Contact.idContact "','"   TypeAdrCmBx.Text  "','"   this.AdrTxtBx0.Text   "','"   this.AdrTxtBx1.Text   "','"   this.AdrTxtBx2.Text   "','"   this.CptTxtBx.Text   "','"   this.VilleTxtBx.Text   "','"   this.PaysCmBx0.Text   "')";                    

                SqlCommand cmd = new SqlCommand(Query, con);
            con.Open();
            SqlDataReader Read;

                try
                {
                 Read = cmd.ExecuteReader();

                }
                catch (Exception exc)
                {

                    MessageBox.Show(exc.Message);
                }

            con.Close();
        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.Message);
        }
    }


    private void PaysCmBx0_SelectedIndexChanged(object sender, EventArgs e)
    {
        string Query1 = "SELECT * FROM Pays  WHERE Pays='"   PaysCmBx0.Text   "'";


        SqlCommand cmd1 = new SqlCommand(Query1, con);
        SqlDataReader myRead;

        try
        {
            con.Open();

            myRead = cmd1.ExecuteReader();

            while (myRead.Read())
            {
                string Code_Pays = myRead["Alpha2"].ToString();

               PaysCmBx0.SelectedIndex.Equals(Code_Pays);
            }

            con.Close();
        }
        catch (Exception exc)
        {

            MessageBox.Show(exc.Message);
        }
    }
  

Комментарии:

1. С какой проблемой вы столкнулись с этим кодом?

2. @ChetanRanpariya Когда я выбираю элемент в выпадающем списке, он фактически ничего не делает

3. @Jimmy означает, что когда выбор изменился PaysCmBx0_SelectedIndexChanged , это событие не запускается?

4. @Jimmy ты отлаживал код PaysCmBx0_SelectedIndexChanged ?

Ответ №1:

спасибо всем, кто финансирует решения для этого :

я создаю функцию, которая получает код страны, соответствующий тому, что выбрано в поле со списком:

      private string get_code_pays(string nom_pays)
    {
        string Query1 = "SELECT * FROM Pays  WHERE Pays='"   PaysCmBx0.Text   "'";
        string Code_Pays="";

        SqlCommand cmd1 = new SqlCommand(Query1, con);
        SqlDataReader myRead;

        try
        {
            con.Open();

            myRead = cmd1.ExecuteReader();

            while (myRead.Read())
            {
                 Code_Pays = myRead["Alpha2"].ToString();

                PaysCmBx0.SelectedIndex.Equals(Code_Pays);
            }

            con.Close();
        }
        catch (Exception exc)
        {

            MessageBox.Show(exc.Message);
        }
        return Code_Pays;
    }
  

а затем вызовите мою функцию с параметром в моей вставке:

          string Query = "INSERT INTO [dbo].[Adresses] ([idParent],[Type] ,[Adresse0],[Adresse1],[Adresse2],[CPT],[Ville],[Pays]) VALUES ('" Contact.idContact "','"   A   "','"   this.AdrTxtBx0.Text   "','"   this.AdrTxtBx1.Text   "','"   this.AdrTxtBx2.Text   "','"   this.CptTxtBx.Text   "','"   this.VilleTxtBx.Text   "','"   get_code_pays( this.PaysCmBx0.Text)   "')";