Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
5 / 5 / 0
Регистрация: 21.04.2011
Сообщений: 23
1

Заполнение combobox из БД

11.01.2013, 16:12. Показов 2799. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Есть у меня несколько comboBox`ов, пусть "марка авто", "цвет" и "пробег"
Существует база SqlServerCe.
В "Марка авто" присутствуют все марки автомобилей, находящиеся в базе. Вот теперь вопрос: как можно сделать, что бы после выбора "Марки авто" в комбобоксе, в остальных комбобаксах(цвет и пробег) соответственно этой марке из базы данных выставлялись данные.

P.s. пусть даже если "цвет" и "пробег" будут не комбобоксы, а текстбоксы, как в них вынести данные.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2013, 16:12
Ответы с готовыми решениями:

Заполнение ComboBox в соответствии со значением другого ComboBox
Значицца имеются, например, две таблички: Дисциплина (Математика, История, Язык, Информатика, и...

Заполнение combobox из БД
Заполняю combobox из БД с условием, но в cb пусто... private void...

Заполнение ComboBox
Есть метод, который записывает данные с БД в textbox. Помогите переписать этот метод под ComboBox ...

Заполнение combobox из бд
есть код заполнение combobox из столбца бд но сам combobox не заполняется не могу особо понять за...

5
197 / 197 / 5
Регистрация: 24.07.2010
Сообщений: 1,311
11.01.2013, 17:33 2
Ну тебе нужно отловить событие изменения значения необходимого комбобокса и в обработчике этого события ты уже будешь менять все что душе угодно
0
5 / 5 / 0
Регистрация: 21.04.2011
Сообщений: 23
11.01.2013, 21:26  [ТС] 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
private void cb1_SelectedIndexChanged(object sender, EventArgs e)
        {
           
            ComboBox senderComboBox = (ComboBox)sender;
            int itemIndex = senderComboBox.SelectedIndex; // получаем индекс
            SqlCeEngine engine = new SqlCeEngine("Data Source='auto.sdf';");
            SqlCeConnection connection = new SqlCeConnection(engine.LocalConnectionString);
            connection.Open();
            SqlCeCommand command = connection.CreateCommand();
            command.CommandText = "SELECT * FROM auto ORDER BY color";
            SqlCeDataReader dataReader = command.ExecuteReader();
 
            string st;  // значение поля БД
         
            while (dataReader.Read())
            {
               
                for (int i = 0; i < dataReader.FieldCount; i++)
                {
                    st = dataReader.GetValue(i).ToString();
                    switch (i)
                    {
 
                        case 5:  // поле color
                            textBox8.Text = st; // сюда выводится
                            break;
 
                    };
                }
                itemIndex++;
            }
            connection.Close();
            
        }
    }
Но вот проблема - в textBox8 всегда выводиться "Красный" , не важно , что я выбрал в комбобоксе cb1

Добавлено через 3 часа 11 минут
up!
0
197 / 197 / 5
Регистрация: 24.07.2010
Сообщений: 1,311
12.01.2013, 06:12 4
Ну правильно, потому что ты каждый раз достаешь из базы одно и тоже, и записываешь в текстбокс одно и тоже, ты же никакой фильтрации или условия не делаешь, чтобы разные значения были
1
5 / 5 / 0
Регистрация: 21.04.2011
Сообщений: 23
14.01.2013, 05:11  [ТС] 5
Снова вопрос...
Такая ошибка -
в строке 36 . InvalidArgument=Значение "1" недопустимо для "index".

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  public void ShowDB()
        {
 
            SqlCeEngine engine = new SqlCeEngine("Data Source='auto.sdf';");
            SqlCeConnection connection = new SqlCeConnection(engine.LocalConnectionString);
            connection.Open();
            SqlCeCommand command = connection.CreateCommand();
            command.CommandText = "SELECT * FROM auto ORDER BY mark";
            SqlCeDataReader dataReader = command.ExecuteReader();
            string st;  // значение поля БД
           // int itemIndex = 1;
 
            listView1.Items.Clear();
 
            for (int itemIndex = 0; dataReader.Read(); itemIndex++ )
            {
 
                for (int i = 0; i < dataReader.FieldCount; ++i)
                {
 
                    if ((st = dataReader.GetValue(3).ToString()) != "Да")
                    {
                        break;
                    }
                    else
                    {
 
                        st = dataReader.GetValue(i).ToString();
                        switch (i)
                        {
 
                            case 0:  // поле id
                                listView1.Items.Add(st);
                                break;
                            case 1:  // поле mark
                                listView1.Items[itemIndex].SubItems.Add(st);
                                //listView1.Items.Add(st);
                                break;
                            case 2:  // поле prob
                                listView1.Items[itemIndex].SubItems.Add(st);
                                break;
                            case 3:  // поле status
                                listView1.Items[itemIndex].SubItems.Add(st);
                                break;
                            case 4:  // поле preor
                                listView1.Items[itemIndex].SubItems.Add(st);
                                break;
                            case 5:  // поле prob
                                listView1.Items[itemIndex].SubItems.Add(st);
                                break;
                            case 6:  // поле status
                                listView1.Items[itemIndex].SubItems.Add(st);
                                break;
                            case 7:  // поле preor
                                listView1.Items[itemIndex].SubItems.Add(st);
                                break;
                            case 8:  // поле preor
                                listView1.Items[itemIndex].SubItems.Add(st);
                                break;
                            case 9:  // поле preor
                                listView1.Items[itemIndex].SubItems.Add(st);
                                break;
 
                        };
 
                    }
 
                }
                //++itemIndex;
 
            }
 
            connection.Close();
        }
Добавлено через 2 минуты
Если без условий, то выводиться все без проблем

Добавлено через 46 минут
Если делаю так, то работает, но строки , где нет слова "да" просто пустые, что не очень красиво

C#
1
2
3
4
5
  if ((st = dataReader.GetValue(3).ToString()) != "Да")
                    {
listView1.Items.Add(st);
                        break;
                    }
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
14.01.2013, 11:09 6
Rashgild, Все гениальное просто. У вас itemIndex инкрементируется независимо от того, есть в строке "Да" или нет. В случае, если "Да" в стркое нет, значение itemIndex становится больше, чем количество строк в ListView. Как следстве, после первой строки без "Да" вы начинаете обращаться в ListView к строке, которой не существует. Вы либо запоминайте последниюю добавленную строку, которую возвращает метод listView.Items.Add(), либо обращайтесь к последнему элементу так: listView.Items[listView.Items.Count - 1].
1
14.01.2013, 11:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2013, 11:09
Помогаю со студенческими работами здесь

SQLite Заполнение Combobox
День добрый! Программа использовала MS SQL LocalDB. Хочу перевести на SQLite. Все компоненты...

Заполнение одного ComboBox-а в зависимости от выбранного значения в другом ComboBox-е
Можно ли сделать так, чтобы если я выбирают первый пункт в первом ComboBox1, а во втором при...

Заполнение ComboBox из БД в зависимости от выбранного значения в другом ComboBox
Т.к. я не профессионал, прошу сразу не закидывать палками )) Проблема следующая, грубо говоря на...

Заполнение ComboBox из БД в зависимости от значения в другом ComboBox
Помогите пожалуйста сделал базу в sql server и привязал ее к visual studia но возникла проблема как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru