Member 13508321 Ответов: 2

Как получить значения в текстовых полях после выбора значения combox?


how can i get data in textboxes from database if my combobox selected values are from table1 and the values i want to get in textboxes are from table2 ?


я получаю имя только 1 субъекта во всех текстовых полях я хочу чтобы все субъекты отображались в текстовых полях после выбора класса из combox

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

private void Result_Load(object sender, EventArgs e)
       {

           string query = "SELECT  class_id , class_name FROM class";
           fillcombo(comboBox3, query, "class_name", "class_id");
          // comboBox3_SelectedIndexChanged(null, null);

       }
       public void fillcombo(ComboBox combo, string query, string displayMember, string valueMember)
       {
           command = new SqlCommand(query, con);
           adapter = new SqlDataAdapter(command);
           table = new DataTable();
           adapter.Fill(table);
           combo.DataSource = table;
           combo.DisplayMember = displayMember;
           combo.ValueMember = valueMember;
       }



private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
       {

           con.Open();
           int val;
           Int32.TryParse(comboBox3.SelectedValue.ToString(), out val);
           //string query = "SELECT  sub_name, class_id FROM subject  WHERE class_id = " + val;
           string query = "SELECT dbo.Subject.sub_name, dbo.Class.class_name FROM     dbo.Class full JOIN dbo.Subject ON dbo.Class.class_id = dbo.Subject.class_id where Class.class_id="+val;
           //string query = "SELECT sub_name FROM subject";


          SqlCommand command = new SqlCommand(query, con);

           using (var reader = command.ExecuteReader())
           {
               //SqlDataReader sdr = command.ExecuteReader();
               if (reader.Read())
               {


                   textBox1.Text = reader["sub_name"].ToString();
                   textBox2.Text = reader["sub_name"].ToString();
                   textBox3.Text = reader["sub_name"].ToString();
                   textBox4.Text = reader["sub_name"].ToString();
                   textBox5.Text = reader["sub_name"].ToString();
                   textBox7.Text = reader["sub_name"].ToString();
                   textBox8.Text = reader["sub_name"].ToString();
                   textBox9.Text = reader["sub_name"].ToString();
                   textBox10.Text = reader["sub_name"].ToString();
                   textBox11.Text = reader["sub_name"].ToString();




               }
               reader.Close();
           }
           con.Close();
       }

BillWoodruff

1. Зачем использовать текстовые поля для отображения данных, которые пользователь не редактирует ... или все-таки содержание ? подумайте о ярлыках ?

2. вы хотите привязать каждое текстовое поле к элементу коллекции объектов, возвращаемых из вашего запроса ?

2 Ответов

Рейтинг:
2

dkamble 10358990

Возьмите одну переменную счетчика и в зависимости от значения счетчика назначьте текстовому полю имя субъекта
как пример ниже


Типа int32 rowcounter = 0;

используя (var reader = команда.Метода executereader())
{
//SqlDataReader sdr = команда.Метода executereader();
если (читатель.читать())
{


if(rowcounter == 0 )
{
текстовое поле textbox1.Текст = читатель["sub_name"].Метод toString();
}
else if(rowcounter == 1 )
{
поле textbox2.Текст = читатель["sub_name"].Метод toString();
}
else if(rowcounter == 2 )
{
textbox3 и.Текст = читатель["sub_name"].Метод toString();
}
else if(rowcounter == 3 )
{
textBox4.Текст = читатель["sub_name"].Метод toString();
}
else if(rowcounter == 4 )
{
textBox5.Текст = читатель["sub_name"].Метод toString();
}
else if(rowcounter == 5 )
{
textBox6.Текст = читатель["sub_name"].Метод toString();
}

.
.
.



rowcounter++;


}
читатель.Закрывать();
}
против.Закрывать();
}


Рейтинг:
0

Gerry Schmitz

Вы продолжаете перемещать один и тот же столбец ("sub_name") в разные текстовые поля.

Вам нужно:

1) Используйте разные имена при доступе к разным столбцам
2) прочтите более одной строки, если это необходимо ... похоже на соединение.