Eliza Maria Ответов: 2

Почему я не могу выбрать значения из выпадающего списка?


У меня есть проект в winforms, и в моей форме RegisterStudent у меня есть combobox, который содержит колонку образования.На основе выбора из выпадающего списка появится выбор флажков.Проблема в том,что когда я хочу выбрать значение из выпадающего списка, я не могу этого сделать.Вместо этого появляется курс для значения по умолчанию.Это мой метод загрузки данных в combobox:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    LoadEducation();
}
private void LoadEducation()
{
    using (SqlConnection conn = new SqlConnection(connstr))
    {
        try
        {
            string query = "select  education from AvailableCourses";

            da = new SqlDataAdapter(query, conn);
            conn.Open();
            ds = new DataSet();
            da.Fill(ds, "AvailableCourses");
            comboBoxEducation.DisplayMember = "education";
            comboBoxEducation.ValueMember = "education";
            comboBoxEducation.DataSource = ds.Tables["AvailableCourses"];
        }
        catch (Exception ex)
        {
            // write exception info to log or anything else
            MessageBox.Show("Error occured!");
        }
    }
}

А это таблица, из которой я беру данные:
CREATE TABLE [dbo].[AvailableCourses](
	[CourseID] [char](10) NOT NULL,
	[ClassID] [nvarchar](50) NULL,
	[courseName] [nvarchar](50) NOT NULL,
	[education] [nvarchar](50) NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[CourseID] ASC


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

Есть ли у кого-нибудь идеи, почему это не работает?Я также пробовал использовать SelectedIndex и SelectedValue,но напрасно, это ничего не даст.Заранее спасибо.

ZurdoDev

"Проблема в том,что когда я хочу выбрать значение из выпадающего списка, я не могу" - что это значит? Выпадающий список отключен?

"Вместо этого появляется курс для значения по умолчанию." Что это значит?

Ваш код показывает поле образование из таблицы AvailableCourses.

Совершенно непонятно, как мы можем вам помочь.

Eliza Maria

Я не могу изменить значение из выпадающего списка.Если он начинается со значения по умолчанию "Item1", когда я хочу изменить его на "item2", он вообще не будет работать.

Eliza Maria

И я также объявляю функцию в Form_Load,но она загружает только значения в combobox.

2 Ответов

Рейтинг:
7

Eliza Maria

Мне удалось найти проблему.У меня был метод,который принимал бы все курсы, специфичные для значения combobox, и прежде всего я удалил LoadEducation() из SelectedIndexChanged для combobox и добавил метод, который принимает курсы, специфичные для этого образования.

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
      {
          this.PopulateCheckBoxes();

      }

После этого я удалил его(
PopulateCheckBoxes
) из Form_Load, потому что он выбрал бы конкретные курсы поверх уже существующих и не обновлялся бы после этого(это также было одной из моих проблем).У меня был только метод LoadEducation() в Form_Load (), и я удалил его из
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
Теперь это прекрасно работает для меня.Спасибо всем за вашу помощь, и я надеюсь, что это может быть полезно для молодых разработчиков с той же проблемой.


Рейтинг:
1

OriginalGriff

Вы не используете выбор combobox в этом коде, чтобы решить, к какой строке вашей таблицы обращаться - и столбцы, к которым вы обращаетесь как DisplayMember и ValueMember, не находятся в вашей таблице базы данных!
Наверное, вам нужно

comboBoxEducation.DisplayMember = "courseName";
comboBoxEducation.ValueMember = "CourseID";

А затем использовать событие SelectedIndexChanged из comboBoxEducation чтобы обновить ваши флажки.


Eliza Maria

Спасибо за ваш ответ.Пожалуйста,посмотрите внимательно,потому что, если вы можете видеть, это находится в таблице:[education] [nvarchar](50) NOT NULL, и мне нужно только это, а не coursename или courseid.Это совершенно разные вещи.