Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
20 / 11 / 4
Регистрация: 20.05.2016
Сообщений: 84
1

Всплывающий список вариантов выбора

26.12.2018, 11:59. Показов 1537. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем вопрос в том как мне сделать так, чтобы при
Код
textBox1.Enter()
сделать так чтобы выходил список из БД, пробовал сделать так при входе в textBox1 скрытый dataGridView автоматически появлялся прямо внизу у textBox1, и я выбирал текст из dataGridView в textBox1.Text а в переменную типа int хранил ID записи. Вопрос в том, есть ли другой компонент, у которого уже встроена эта функция? На пикче самый простой пример выбора данных.
Миниатюры
Всплывающий список вариантов выбора  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2018, 11:59
Ответы с готовыми решениями:

DataGridViewComboBoxCell всплывающий список
В бд есть таблица users и в ней поле role принимающее только два значения - 0 или 1. В программе...

Всплывающий список
Можно ли реализовать, при вводе фамилии в допустим в техтБокс у меня открывался список фамилий...

Всплывающий список (html)
В IE5 (и др.) при вводе в формах (поля ввода e-mail, login, search, password и др.) всплывают...

Свой всплывающий список
Задался я необходимостью, впихнуть в Комбобокс Вместо Списка Дерево. Неважно зачем, теперь мне...

13
113 / 89 / 26
Регистрация: 11.12.2018
Сообщений: 331
26.12.2018, 12:06 2
Так это AutoComplete. Поиск по форуму даст множество решений.
Или я не понял вопроса?
0
20 / 11 / 4
Регистрация: 20.05.2016
Сообщений: 84
26.12.2018, 12:32  [ТС] 3
OttoFix,если с
Код
AutoComplete
то откуда будет всплывать данные из БД?
0
113 / 89 / 26
Регистрация: 11.12.2018
Сообщений: 331
26.12.2018, 12:40 4
Цитата Сообщение от Salim_Destroyer Посмотреть сообщение
откуда будет всплывать данные из БД?
Почему бы и нет, возможно это будет накладно по ресурсам.
Примерно так по событию текстбокса TextChanged, выполнять запрос к базе примерно такого вида
SQL
1
SELECT t.item FROM items AS t WHERE t.item LIKE ...
Результатом выборки заполнять список AutoComplete.
Можно еще ограничить выполнение запроса по количеству набранных символов, к примеру первый запрос что бы делался только тогда, когда пользователь ввел хотя бы 3 символа.
0
Эксперт .NET
12081 / 8389 / 1282
Регистрация: 21.01.2016
Сообщений: 31,601
26.12.2018, 12:41 5
Цитата Сообщение от Salim_Destroyer Посмотреть сообщение
то откуда будет всплывать данные из БД?
Естественно, что компоненту будет передаваться моделька, из которой он может брать данные.
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
27.12.2018, 10:30 6
Цитата Сообщение от OttoFix Посмотреть сообщение
по событию текстбокса TextChanged, выполнять запрос к базе примерно такого вида
ну такое...
Как бы каждый раз лезть, подключаться, тянуть - тут сильно зависит от задачи. Если данных немного - то проще вытянуть всё, а потом локально отображать. Да и "LIKE....", при неправильно использовании - будет очень тупым местом ПО.
0
113 / 89 / 26
Регистрация: 11.12.2018
Сообщений: 331
27.12.2018, 14:04 7
Цитата Сообщение от hoolygan Посмотреть сообщение
Как бы каждый раз лезть, подключаться, тянуть - тут сильно зависит от задачи.
Да, это понятно, но я же не знаю, что человек хочет реализовать и объем его данных (может поисковик свой создает ).
Я привел только для примера, что такое возможно сделать.
0
20 / 11 / 4
Регистрация: 20.05.2016
Сообщений: 84
27.12.2018, 19:14  [ТС] 8
OttoFix, Usaga, не нравится мне как она работает этот AutoComplete
в общем сделал так на textChanged
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        private void txtCountry_TextChanged(object sender, EventArgs e)
        {
            AutoCompleteStringCollection collection = new AutoCompleteStringCollection();
            if (txtCountry.Text.Length > 0)
            {
                var countryies = from c in country
                                where c.Name.Contains(txtCountry.Text)
                                orderby c.Name
                                select c;
                foreach (var item in countryies)
                {
                    collection.Add(item.Name);
                }
            }            
            txtCountry.AutoCompleteCustomSource = collection;          
        }
, где country это
C#
1
2
3
4
using (placeDBEntities db = new placeDBEntities())
            {
                country = db.Country.ToList();
            }
на jQuery(тоже AutoComplete) совсем по другому работает, а тут все с руки надо писать

Добавлено через 33 минуты
Ошибка, память проседает, надо как то по другому сделать. Но думаю уже это мне не надо.
0
113 / 89 / 26
Регистрация: 11.12.2018
Сообщений: 331
28.12.2018, 06:09 9
Цитата Сообщение от Salim_Destroyer Посмотреть сообщение
надо как то по другому сделать.
Если объем данных не большой для AutoComplete, то лучше его сразу весь подгружать в момент открытия формы.
Список стран я считаю небольшим списком, поэтому лучше один раз его заполнить при открытии формы, чем постоянно его запрашивать из базы и заполнять AutoComplete на каждый чих TextChanged.
0
20 / 11 / 4
Регистрация: 20.05.2016
Сообщений: 84
28.12.2018, 09:31  [ТС] 10
OttoFix, так и есть у меня есть
C#
1
 List<Country>country;
которая загружается данными при FormLoad
C#
1
2
3
4
.  using (placeDBEntities db = new placeDBEntities())
            {
                country = db.Country.ToList();
            }
но я думаю память проседает, потому что при каждой введеной буквы или пробела в textbox он ищет совпадение и через цикл проходит.
0
113 / 89 / 26
Регистрация: 11.12.2018
Сообщений: 331
28.12.2018, 10:27 11
Цитата Сообщение от Salim_Destroyer Посмотреть сообщение
он ищет совпадение и через цикл проходит
Не понял, про какой цикл речь?
0
20 / 11 / 4
Регистрация: 20.05.2016
Сообщений: 84
28.12.2018, 10:34  [ТС] 12
OttoFix,
C#
1
2
3
4
5
6
7
8
9
10
11
12
.   AutoCompleteStringCollection collection = new AutoCompleteStringCollection();
            if (txtCountry.Text.Length > 0)
            {
                var countryies = from c in country
                                where c.Name.Contains(txtCountry.Text)
                                orderby c.Name
                                select c;
                foreach (var item in countryies)
                {
                    collection.Add(item.Name);
                }
            }
0
113 / 89 / 26
Регистрация: 11.12.2018
Сообщений: 331
28.12.2018, 10:46 13
Вот этот цикл нужно убрать из textChanged, а в FormLoad добавить, только чтоб запрос выбирал сразу все страны из базы. AutoComplete сам реализует подстановку.
0
20 / 11 / 4
Регистрация: 20.05.2016
Сообщений: 84
28.12.2018, 11:17  [ТС] 14
OttoFix, Но а как мне тогда выбирать регион и город, у меня 3 таблицы Country,Region,City и у Region есть countryID, а у City regionID. Я например если в TextBoxCountry выбираю Страну, идет выборка Region по ID Country, а когда выбираю Region в TextBoxRegion, то идет выборка City по ID Region. Так я заполнив всеми странами, регионами и городами TextBox`ы, лишь заполню AutoComplete TextBox`а, просто не все пользователи политическую карту мира хорошо знают.Вообще в идеале я так хотел сделать.
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
        private int countryID = 0, regionID = 0;
        private void txtCountry_TextChanged(object sender, EventArgs e)
        {
            AutoCompleteStringCollection collection = new AutoCompleteStringCollection();
            if (txtCountry.Text.Length > 0)
            {
                var countryies = from c in country
                                where c.Name.Contains(txtCountry.Text)
                                orderby c.Name
                                select c;
                foreach (var item in countryies)
                {
                    collection.Add(item.Name);
                    countryID = item.Id;
                }
            }            
            txtCountry.AutoCompleteCustomSource = collection;          
        }
        private void txtRegion_Enter(object sender, EventArgs e)
        {
            AutoCompleteStringCollection collection = new AutoCompleteStringCollection();
            if (txtRegion.Text.Length > 0)
            {
                var regions = from r in region
                                where r.countryID.Contains(countryID)
                                orderby r.Name
                                select c;
                foreach (var item in regions)
                {
                    collection.Add(item.Name);
                    regionID = item.Id;
                }
            }            
            txtRegion.AutoCompleteCustomSource = collection;          
        }
        private void txtCity_Enter(object sender, EventArgs e)
        {
            AutoCompleteStringCollection collection = new AutoCompleteStringCollection();
            if (txtCity.Text.Length > 0)
            {
                var cityies = from c in region
                                where c.regionID.Contains(regionID)
                                orderby r.Name
                                select c;
                foreach (var item in cityies)
                {
                    collection.Add(item.Name);
                }
            }            
            txtCity.AutoCompleteCustomSource = collection;          
        }
Добавлено через 9 минут
В общем решил задачу, написав отдельно сам методы
0
28.12.2018, 11:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2018, 11:17
Помогаю со студенческими работами здесь

Как сделать всплывающий список
Есит элемент листбокс,но там нужно прокручивать.А есть ли элемент на подобие как в html...

Оператор выбора вариантов

Оператор выбора вариантов
Помогите решить задачу Даны три числа а, в, с в восьмиричной системе. Определить наибольшее из...

Оператор выбора вариантов
Даны три числа а, в, с в шестнадцатеричной cистеме. Определить наименьшее из них. 1. а=A, в=22,...


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

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