Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 17.07.2021
Сообщений: 63

Долго загружаются данные в ComboBox

05.07.2024, 13:59. Показов 529. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Есть такая проблема. В окне находится ComboBox. При загрузке окна он заполняется данными с БД.
Данные очень много - порядка 1000000. Ждать приходится очень много. Подскажите пожалуйста решение этой проблемы?
Может использовать какое-то хранилище в который один раз эти данные загрузятся.

C#
1
2
3
4
5
6
7
8
9
private void SettingsСomboBox(ComboBox comboBox, string DisplayMember, string ValueMember, string request)
        {
            comboBox.DataSource = LoadDB(request);
            comboBox.DisplayMember = DisplayMember;
            comboBox.ValueMember = ValueMember;
            comboBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            comboBox.AutoCompleteSource = AutoCompleteSource.ListItems;
 
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.07.2024, 13:59
Ответы с готовыми решениями:

Данные загружаются очень долго
Добрый день! Всем у меня есть поля в поле написано функции но функции загружается очень долго ~ 7 - 8 сек как можно ускорить работу...

Не загружаются данные в combobox
Вылетает ошибка при выполнении запроса. Хотя запрос писал и проверял используя запрос в БД. string CommandText = ...

Долго загружаются тесты
Долго загружаются тесты. Бесконечно долго.

7
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3438 / 2758 / 575
Регистрация: 04.09.2018
Сообщений: 8,650
Записей в блоге: 3
05.07.2024, 14:11
Цитата Сообщение от SCBist Посмотреть сообщение
Данные очень много - порядка 1000000
какой практический смысл загружать мильон итемов в комбобокс? Не лучше ли их разбить на некие группы и использовать пагинацию?
0
0 / 0 / 0
Регистрация: 17.07.2021
Сообщений: 63
05.07.2024, 14:52  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
какой практический смысл загружать мильон итемов в комбобокс? Не лучше ли их разбить на некие группы и использовать пагинацию?
как это сделать и какой при этом использовать элемент ?
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
05.07.2024, 15:38
Цитата Сообщение от SCBist Посмотреть сообщение
Может использовать какое-то хранилище в который один раз эти данные загрузятся.
Хранить без надобности большой объём данных плохая идея с точки зрения расходования памяти.
Цитата Сообщение от wizard41 Посмотреть сообщение
Не лучше ли их разбить на некие группы и использовать пагинацию?
Группировка, в зависимости от каких-то внешних условий, уже лучше.
Пагинация - затратно в плане написания кода, но при большом объёме данных самый разумный подход.
SCBist, выбирайте путь, тем самым конкретизируя вопрос, а дальше будет видно чем можем помочь.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3438 / 2758 / 575
Регистрация: 04.09.2018
Сообщений: 8,650
Записей в блоге: 3
05.07.2024, 16:35
Цитата Сообщение от Uswer Посмотреть сообщение
затратно в плане написания кода
Дык тут сама идея ТСа выгребать из базы 1кк записей да еще и пихать в один контрол! - уже кажется подозрительной. Что-то он упускает из виду и нам не говорит, возможно можно получать их по критерию, там не знаю, по первой букве, например.
Выбирать в комбоксе нужный элемент из миллиона - треш еще тот будет.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3438 / 2758 / 575
Регистрация: 04.09.2018
Сообщений: 8,650
Записей в блоге: 3
05.07.2024, 17:37
Цитата Сообщение от Uswer Посмотреть сообщение
Пагинация - затратно в плане написания кода
ну как сказать...

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
    public partial class Form1 : Form
    {
        readonly List<int> items = [];
        List<int> page = [];
 
        public Form1()
        {
            InitializeComponent();
            items = Enumerable.Range(1, 1_000).ToList()!;
            page = items.Take(100).ToList();
            updateCombo();
        }
 
        private void btnIncrease_Click(object sender, EventArgs e)
        {
            if (page[^1] != items[^1])
            {
                page = items.Skip(page[^1]).Take(100).ToList();
                updateCombo(); 
            }
        }
 
        private void btnDecrease_Click(object sender, EventArgs e)
        {
            if (page[0] != items[0])
            {
                page = items.Skip(page[^1] - 200).Take(100).ToList();
                updateCombo();
            }
        }
 
        void updateCombo() => comboBox1.DataSource = page;
    }
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,748
Записей в блоге: 1
08.07.2024, 08:07
Цитата Сообщение от wizard41 Посмотреть сообщение
ну как сказать...
Эмм, ну как бы немного не то. Изначально предполагается, что в памяти у нас нет полного набора данных, поэтому определение общего количества данных и саму пагинацию делать LINQ-ом не выйдет. Всё это нужно перевести на уровень БД. Да и кнопки +100 -100 выглядят колхозом, предполагается ведь пагинация в выпадающем списке comboBox-а без всяких кнопок
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3438 / 2758 / 575
Регистрация: 04.09.2018
Сообщений: 8,650
Записей в блоге: 3
08.07.2024, 12:34
Uswer, не, да это понятно. Конечно, выбирать надо частями, но у меня нет таких условий (БД с тучей записей)... Ну и кнопки олицетворяют "сигналы" выбора следующей/предыдущей партии данных - как это будет сделано в конкретном случае, зависит от деталей задачи.
Я считаю что у автора сама идея не корректна, но никто не знает что там за данные у него. Нужна конкретика.
Ну и сам код пагинации не сильно то увеличится, откуда бы эти данные не черпать. Т.е. не сказать что это прям громоздко.
У меня есть готовый хелпер-класс для пагинации элементов <T>, делал как-то для чего-то.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.07.2024, 12:34
Помогаю со студенческими работами здесь

Долго загружаются пользователи
У меня долго загружаются пользователи(от2 до 10 минут)! Подскажите в чём дело?? Когда загружаешь их, сначало поевляется пуск, потом значи.

Долго загружаются папки
Здравствуйте! После загрузки самой ос виндовс 7 максимальная,грузиться в начале черный экран,(меню пуск присутствует),потом рабочий стол,и...

Долго загружаются игры
Здравствуйте. Извините, что написал наверно не в тот раздел, но этот подходит более всего под мою проблему. Суть проблемы: Где то...

ДОЛГО загружаются БАЗЫ
Привет всем. Ситуация такова. Есть два компа в бухгалтерии. (новые) Соеденены по сетке. На одном установлены все базы. Второй к...

Долго загружаются программы
Здравствуйте. Немного предистории: была загрузка ЦП часто под 100%, принято решение очистить пк от пыли. В результате цп перестал...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru