2016-03-22 3 views
1

Я пытаюсь заполнить базу данных оракула combobox формы затем в соответствии с выбранным значением из combobox Я хочу, чтобы автоматически заполнить textbox1, textbox2 и textbox3Как заполнить базу данных оракула формы combobox?

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

пожалуйста, если кто-нибудь может мне помочь или объяснить мне

public void Fillcombobox() 
    { 
     string connstr = "data source=db;user id=user;password=pwd;"; 
     string cmdtxt = "select product_id, description from products"; 

     using (OracleConnection conn = new OracleConnection(connstr)) 
     using (OracleCommand cmd = new OracleCommand(cmdtxt,conn)) 
     { 
      conn.Open(); 
      OracleDataReader dr; 
      cmd.ExecuteReader(); 
      CB_PRODUCT_ID.DisplayMember = "product_id"; 
      CB_PRODUCT_ID.ValueMember = "description"; 

      while (dr.Read()) 
      { 
       // what should I d to fill other textboxs ? 
       TB_PRODUCTS.Text = ???; 
      } 
     } 

    } 

    private void CB_PRODUCT_ID_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     Fillcombobox(); 
    } 

ответ

0
while (dr.Read()) 
      { 
       TB_PRODUCTS.Text = dr["YourColumnName"].toString(); 
      } 
+0

Вы должны * комбинировать * значения от читателя, но не переписывать * –

+1

Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно того, почему и/или как этот код отвечает на вопрос, улучшает его долгосрочную ценность. – ryanyuyu

+0

@ ryanyuyu вы правы, главный вопрос заключался в том, как изменить значения textbox1, textbox2,, textbox3 в соответствии со значением combobox? – samer

1

Вы должны объединить все значения от курсора, скажем, List<String>:

public void Fillcombobox() 
    { 
     //TODO: do not hardcode connection string (esp. password), but load it 
     string connstr = "data source=db;user id=user;password=pwd;"; 

     string cmdtxt = 
      @"select product_id, 
        description 
       from products"; 

     using (OracleConnection conn = new OracleConnection(connstr)) 
     using (OracleCommand cmd = new OracleCommand(cmdtxt, conn)) 
     { 
      conn.Open(); 

      // reader is IDisposable and should be closed 
      using (OracleDataReader dr = cmd.ExecuteReader()) 
      { 
       List<String> items = new List<String>(); 

       while (dr.Read()) 
       { 
        items.Add(String.Format("{0}, {1}", dr.GetValue(0), dr.GetValue(1))); 
       } 

       TB_PRODUCTS.Items.AddRange(items.ToArray()); 
      } 

     } 

    } 

Редактировать: Чтобы обновить TextBoxes (textbox1, TextBox2 и textbox3) я предлагаю использовать Combobox Событие TextChanged:

private void TB_PRODUCTS_TextChanged(object sender, EventArgs e) { 
    ComboBox cb = sender as ComboBox; 

    // Either explicitly or via cb.SelectedIndex 
    textbox1.Text = cb.Text; 
} 
+0

Я связал это, но все значения 'combobox' находятся в одной строке, я попытался заменить sb.Append (Convert.ToString (dr [" YourCoumnName "])); с sb.Appendline (Convert.ToString (dr ["YourCoumnName"])); но thats wont help – samer

+0

@samer: Извините, но кажется, что вам нужно комбинировать элементы с «List ', а не с 'StringBuilder'. Я отредактировал ответ. –

+0

У меня две ошибки: 1- Наилучшее перегруженное совпадение метода для 'System.Windows.Forms.ComboBox.ObjectCollection.AddRange (object [])' имеет некоторые недопустимые аргументы – samer

Смежные вопросы