| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Два combobox. Привязка к данным. |
| Автор: eon 23.11.2010, 14:24 | ||||||
| VS08C# SQLServer08 Есть два combobox. Первый заполняется при загрузке формы из таблицы naimenovanie:
Второй в зависимости от того, что выбрано в первом, загружает данные из таблицы utochnenie при событии comboBox1_SelectedIndexChanged:
Таблицы naimenovanie и utochnenie связаны по полю naimenovanie_id в таблице utochnenie. Строка
неверная, хотя работает. Вопрос:как изменить SELECT, чтобы выбиралось: "SLECET * FROM utochnenie WHERE naimenovanie_id = <ИД НАИМЕНОВАНИЯ ВЫБРАННОГО В ПЕРВОМ КОМБОБОКСЕ> ORDER BY ord" Спасибо. |
| Автор: A5uKa 23.11.2010, 14:45 |
| ComboBox1.SelectedItem.Value.ToString() |
| Автор: Freyzer 23.11.2010, 14:46 |
| Может тут что поможет http://www.google.ru/search?ie=UTF-8&hl=ru&q=%D0%94%D0%B2%D0%B0%20combobox.%20%D0%9F%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%B0%20%D0%BA%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC.&redir_esc=y&ei=LKjrTMuZJYbBswaarcX2Dg |
| Автор: eon 23.11.2010, 15:09 | ||
Не идет :( |
| Автор: eon 23.11.2010, 15:32 | ||
Это то что нужно. Но почему-то после comboBox1.SelectedIndex = 0; comboBox1.SelectedText остается пустым. Кто-нибудь знает, почему? |
| Автор: A5uKa 23.11.2010, 15:53 | ||||
Я не понимаю что надо тогда ... Задай вопрос более конкретно, а то куски непонятно чего везде и что из этого не работает и как работать должно я не понимаю. Пустым остаётся скорее всего из-за того, что ты PostBack не делаешь. |
| Автор: eon 23.11.2010, 15:59 |
| От первоначального вопроса уже перешел к следующему: Заполнил комбобокс данными программно из таблицы БД. При событии comboBox1_SelectedIndexChanged смотрю comboBox1.SelectedIndex - отображается правильно (ну если выбрал третью строку в комбобоксе то и будет comboBox1.SelectedIndex = 2), а вот comboBox1.SelectedText и comboBox1.SelectedItem as string остаются пустыми, хотя третья строка в комбобоксе не пустая естественно. Проект WinForms, а не ASP.NET. это по поводу postback'a. |
| Автор: neic 23.11.2010, 16:32 |
| eon comboBox1.SelectedText замени на comboBox1.Text Старое (оставил может пригодиться): Как я понял: У нас есть: 1 БД 2 Комобобокса Первый комбобокс подгружает данные из БД и содержит в себе список наименований чего-то. Нужно: Чтобы при выборе в первом кобобоксе какого-либо пункта: считался номер строки (он же видимо ID) и подгружались данные из БД? Если я прав, то: Во-первых: в первом комбобоксе сделай событие comboBox1.SelectedIndex (или TextChanged) и туда перемести код заполнения второго. Во-вторых: string t = comboBox1.Text; //возвращаем выбранную строку, т.е. если у нас строка с индексом три = Привет, то будет t="Привет". int i = comboBox1.SelectedIndex; //собственно выбранная строка В-третьих: запрос для заполнения второго будет таков: если SelectedIndex является ID: "SLECET * FROM utochnenie WHERE naimenovanie_id ="+ comboBox1.SelectedIndex + " ORDER BY ord" если Text является ID: "SLECET * FROM utochnenie WHERE naimenovanie_id ="+ Convert.ToInt32(comboBox1.Text) + " ORDER BY ord" |
| Автор: jonie 23.11.2010, 17:04 |
| В аттаче пример как это делать, без всяких запросов можно сделать.. используя биндинг и DataSet например |
| Автор: neic 23.11.2010, 17:08 |
| jonie Кстати да, через мастера можно было бы все настроить =) |
| Автор: jonie 23.11.2010, 17:17 |
| neic, ну в своем примере я не делал релейшена, хотя он тут уместен. Я показал как именно получить id выбранный и выбрать по нему записи |
| Автор: eon 24.11.2010, 07:00 | ||||||
Спасибо за равернутый ответ. НО.. ID в бд и порядок следования в combobox1 не обязательно совпадают. Сделал замену на comboBox1.Text, всё работает хорошо, но только если вручную поменял я выбранный пункт в combobox1. То есть у меня в событии формы Form1_Load написано
Вроде после этой строки должно вызваться событие
А оно почему-то не вызывается. Оно вызывается когда я уже сам вручную поменяю на форме выбранный пункт в combobox1. |
| Автор: eon 24.11.2010, 07:56 |
| Всем спасибо. Проблему решил. |