Member 10195910 Ответов: 1

Как отобразить значение выбранных элементов в combobox в заданное текстовое поле


Я хочу, чтобы если выбранные элементы в поле со списком, где значение элемента поля со списком запрашивается базой данных, результат выбранного элемента в поле со списком будет отображаться в текстовом поле

Что я уже пробовал:

/ * код получить данные из access db в поле со списком */
private void GetProductsName()
      {
          try
          {
              OleDbConnection conn = new OleDbConnection();
              conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\xxx\Documents\RetailDatabse.accdb;Persist Security Info=False";
              conn.Open();

              OleDbCommand cmd = new OleDbCommand();
              cmd.Connection = conn;
              cmd.CommandText = "SELECT ProductName, ProductPrice FROM Products";
              OleDbDataReader reader = cmd.ExecuteReader();
              while (reader.Read())
              {
                  ItemNamecomboBox.Items.Add(reader["ProductPrice"].ToString() + "  " + reader["ProductName"].ToString());
                  //ItemNamecomboBox.Items.Add(reader["ProductPrice"].ToString());

              }

              conn.Close();
          }
          catch (Exception ex)
          {
              MessageBox.Show("Error query" + ex);
          }
      }


/ * отображение данных из выбранного поля со списком, которые получают ошибку */
private void ItemNamecomboBox_SelectedValueChanged(object sender, EventArgs e)
       {

           decimal productPrice = Convert.ToDecimal(ItemNamecomboBox.SelectedValue);
           UnitPricetextBox.Text = productPrice.ToString();

       }

1 Ответов

Рейтинг:
1

Karthik_Mahalingam

попробовать это

ItemNamecomboBox.DisplayMember = "Text";
            ItemNamecomboBox.ValueMember = "Value";
            while (reader.Read())
            {
                ItemNamecomboBox.Items.Add(new { Text = reader["ProductPrice"].ToString() + "  " + reader["ProductName"].ToString(), Value = reader["ProductPrice"].ToString() });
            } 


private void ItemNamecomboBox_SelectedValueChanged(object sender, EventArgs e)
       {
           dynamic item = ItemNamecomboBox.SelectedItem;
           if (item != null)
           {
               string price = item.Value;
           }
       }


Member 10195910

Привет, ваше решение все еще получает любую ошибку для приведенного ниже кода
частная ItemNamecomboBox_SelectedValueChanged недействительным(объект отправителя, EventArgs в электронной)
{
динамический элемент = ItemNamecomboBox.Элемент;

if (item != null)
{
string price = item. Value; / / the one get error
UnitPricetextBox.Текст = цена;

}
}

вывод ошибок :
RuntimeBindeException был необработан
<> fAnonymousType0

Karthik_Mahalingam

убедитесь, что эти 2 строки объявлены перед циклом
ItemNamecomboBox. DisplayMember = " Текст";
ItemNamecomboBox. ValueMember = " Значение";