|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.05.2012, 19:44 | #1 |
Пользователь
Регистрация: 11.04.2011
Сообщений: 46
|
как убрать повторения из combobox?
Здравствуйте! Проблема в следующем: я заполняю combobox данными из колонки таблицы sql, но там есть данные, которые повторяются и мне надо избавиться от этих повторений. В свойствах combobox'а вроде бы ничего не нашел, а как реализовать программно, не додумался. Кто может помочь?
|
18.05.2012, 20:46 | #2 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 85
|
Первое, что приходит в башню: не заполнять список комбобокса напрямую из базы данных, а сначала всасывать данные в массив, массив фильтровать, и уже после этого заполнять комбобокс из массива. Если речь идёт о кобмобоксе, то и памяти потребуется немного, да можно и освободить память, занятую массивом, после того, как он станет не нужен.
Это если по каким-нибудь причинам в SQL-запросе нельзя использовать DISTINCT для отсеивания дублированных данных, а если можно - то и вопроса нет. |
18.05.2012, 23:02 | #3 |
Пользователь
Регистрация: 11.04.2011
Сообщений: 46
|
попробую через массив, ибо я заполняю combobox не через sql запрос, а через binding source, и таким образом он тупо кидает все значения колонки в combobox
|
18.05.2012, 23:22 | #4 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 85
|
OK, это нетрудно.
|
19.05.2012, 01:49 | #5 |
Пользователь
Регистрация: 11.04.2011
Сообщений: 46
|
Код:
Последний раз редактировалось emdroof; 19.05.2012 в 01:59. |
19.05.2012, 11:23 | #6 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 85
|
Вы всё-таки сразу заполняете комбобокс, потом его очищаете и вновь заполняете. Это некультурно. Когда-то на заре (но на самом деле не так уж давно), когда не было таких мощных методов работы с массивами данных, как сейчас, действительно иногда делали невидимый ListBox, например, чтобы потом выуживать из него данные. Но эти времена давно прошли.
С другой стороны, возможностей списочных стандартных элементов управления часто бывает недостаточно, чтобы хранить связанные с их пунктами другие данные, необходимые в программе,- поэтому всё равно приходится параллельно с этими элементами поддерживать некие массивы или "словари", привязанные к их пунктам. Вы этим примером сами наглядно продемонстрировали, что прямая связь источника с элементом, отображающим данные, не всегда правильное решение (по сути дела, оно никогда не бывает таким гладким, как примеры в учебниках). Почему бы Вам не отказаться от этого и не заполнять источник типа DataSet или DataTable или DataView и уже оттуда заправлять свой комбобокс отфильтрованными данными, как я и посоветовал в самом начале? Можно для этого использовать LINQ, а можно воспользоваться и традиционными вложенными циклами - это при небольшом количестве данных сработает очень быстро. Писать код вместо Вас я не буду, у меня тоже есть код, с которым у меня проблемы. Как написал где-то Марк Твен: "Убедите свою голову пошевелить мозгами". |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Убрать повтор записей в combobox | Stian | БД в Delphi | 5 | 22.10.2012 19:49 |
Убрать повтор записей в combobox | Stian | БД в Delphi | 3 | 13.04.2011 13:00 |
Как в Combobox убрать список? | Alexi | Компоненты Delphi | 10 | 04.01.2011 08:25 |
Повторения в Combobox | crit | БД в Delphi | 3 | 03.06.2009 17:10 |