Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/14: Рейтинг темы: голосов - 14, средняя оценка - 5.00
mikh
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
1

Поместить значения 2х столбцов БД в 1 элемент ComboBox

02.07.2012, 14:51. Просмотров 2740. Ответов 18
Метки нет (Все метки)

Есть 2 столбца в БД:
S1 | S2

DE | НIМЕЧЧИНА
DJ | ДЖИБУТI
DK | ДАНIЯ
DM | ДОМIНIКА
DO | ДОМIНIКАНСЬКА РЕСПУБЛIКА
DZ | АЛЖИР
EA | Евразійська патентна організація
EC | ЕКВАДОР
....
Нужно что бы в comboBox'е был список типа
НIМЕЧЧИНА(DE)
ДЖИБУТI(DJ)
ДАНIЯ(DK)
ДОМIНIКА(DM)
и т.д.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2012, 14:51
Ответы с готовыми решениями:

Строки поместить в ComboBox
Здравствуйте! Вот такие вопросы: 1.Есть таблицы созданные в SQL server, как...

Поместить в sql запрос данные из combobox'a
Здравствуйте, не могу реализовать одну функцию в программе. Суть такая, в...

Как в combobox поместить имена из Таблицы
Вопрос такой как в комбобокс поместить имена столбцов таблицы Бд провол так...

При выборе значения в одном ComboBox меняются значения в других
Помогите, пожалуйста. Есть несколько ComboBox Выбирая значение в...

ComboBox и выбор столбцов таблицы
Добрый день! Есть такой вопрос. Обычно ComboBox используется для выбора...

18
nio
5965 / 3371 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.07.2012, 15:27 2
mikh, для такого отображения тебе нужно объединять строки сразу в запросе SELECT
1
mikh
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
02.07.2012, 17:21  [ТС] 3
1)
мне надо сделать так:
вот есть 2 ячейки:
DE | НIМЕЧЧИНА
в comboBox'е должно быть:
НIМЕЧЧИНА(DE)
и если я выберу это, то в переменную надо внести 'DE'
тоесть, если обьеденить в запросе, как вы сказали, то мне придется substring'ом вырезать?
2)
чесно говоря не знаю как обьеденить так что бы второе значение в скобках было
0
nio
5965 / 3371 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.07.2012, 17:41 4
mikh, посмотри Заполнение Combobox из базы Access
0
mikh
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
02.07.2012, 18:08  [ТС] 5
из этого я понял что если
C#
1
2
сomboBox1.DisplayMember ="S2";
сomboBox1.ValueMember="S1";
то когда я присвою значение переменной
C#
1
string country = сomboBox1.SelectedValue
у меня там будет "DE", так ?

но все же остается вопросто как в запросе соеденить S1 и S2 что бы в comboBox'е было S2(S1)
или надо написать
C#
1
сomboBox1.DisplayMember ="S2(S1)";
???

Не по теме:

просто сейчас проверить не могу, еду домой

0
vrodnenok
16 / 16 / 5
Регистрация: 17.05.2012
Сообщений: 124
02.07.2012, 22:31 6
оба значения по одному индексу?

тогда не мудрствуя лукаво:

C#
1
string str = ""+table.Rows[i].Cells["column1"].Value.ToString()+"("+table.Rows[i].Cells["column2"].Value.ToString()+")";
такие строки соберите в List и сделайте сорсом для комбобокса.
0
mikh
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
03.07.2012, 12:37  [ТС] 7
допустим есть БД в которой в data1 полное название страны, а в data2 абривиатура.
вот как я заполняю свой comboBox:
C#
1
2
3
4
5
6
7
SqlCommand cmd1 = new SqlCommand(queryString1, connection);
DataTable tbl1 = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd1);
da.Fill(tbl1);
this.comboBox1.DataSource = tbl1;
this.comboBox1.DisplayMember = "...";
this.comboBox1.ValueMember = "data1";
где data1 та колонка, которую вернул запрос queryString1.

что нужно для того что бы сделать этот код:
C#
1
string str = ""+table.Rows[i].Cells["column1"].Value.ToString()+"("+table.Rows[i].Cells["column2"].Value.ToString()+")";
???
в цикле перебирать каждую строку, соединять их подобным образом и записывать в таблицу ?
0
turbanoff
Эксперт Java
4024 / 3759 / 742
Регистрация: 18.05.2010
Сообщений: 9,330
Записей в блоге: 11
Завершенные тесты: 1
03.07.2012, 12:58 8
Переходите на светлую сторону - используйте BindingList со своим классом, вместо DataTable и ко.
В нем можно будет реализовать какие угодно property, с любыми значениями.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Country
{
   public long ID {get; set;}
   public string Code {get; set;}
   public string Name {get; set;}
   public string ViewName
   {
      get
      {
         return Name + '(' + Code + ')';
      }
   }
}
C#
1
2
3
this.comboBox1.DataSource = bindingListOfCountry;
this.comboBox1.DisplayMember = "ViewName";
this.comboBox1.ValueMember = "ID";
0
fatalerror
2 / 2 / 0
Регистрация: 13.06.2012
Сообщений: 6
06.07.2012, 18:54 9
SQL
1
SELECT S2 ||' '||S1 AS country FROM nameTable
C#
1
2
сomboBox1.DisplayMember ="country";
сomboBox1.ValueMember="S1";
0
mikh
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
11.07.2012, 10:05  [ТС] 10
Цитата Сообщение от fatalerror Посмотреть сообщение
SQL
1
SELECT S2 ||' '||S1 AS country FROM nameTable
C#
1
2
сomboBox1.DisplayMember ="country";
сomboBox1.ValueMember="S1";
Incorrect syntax near '|'.
0
nio
5965 / 3371 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
11.07.2012, 10:22 11
Сделай такой запрос
SQL
1
SELECT S2 + ' ' + S1 AS country FROM nameTable
1
fatalerror
2 / 2 / 0
Регистрация: 13.06.2012
Сообщений: 6
11.07.2012, 11:07 12
какая СУБД?
|| - это оператор конкатенации.
1
mikh
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
12.07.2012, 11:52  [ТС] 13
MS SQL Server 2005
ошибку выдает:
Привязка к новому члену значения невозможна.
Имя параметра: value
код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
string queryString1 = "select CountryName + ' ' + CountryCode as country from table";
            using (SqlConnection connection =
               new SqlConnection(connectionString))
            {
                SqlCommand cmd1 = new SqlCommand(queryString1, connection);
                DataTable tbl1 = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(cmd1);
                da.Fill(tbl1);
                this.comboBox1.DataSource = tbl1;
                this.comboBox1.DisplayMember = "country";
                this.comboBox1.ValueMember = "CountryCode";
            }
0
fatalerror
2 / 2 / 0
Регистрация: 13.06.2012
Сообщений: 6
12.07.2012, 13:03 14
Попробуй так:
C#
1
string queryString1 = "select  CONCAT(CountryName,CountryCode) as country from table";
Но лучше сначала в субд, посмотри вернет ли запрос результат.
0
mikh
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
12.07.2012, 13:58  [ТС] 15
Цитата Сообщение от fatalerror Посмотреть сообщение
Попробуй так:
C#
1
string queryString1 = "select  CONCAT(CountryName,CountryCode) as country from table";
Но лучше сначала в субд, посмотри вернет ли запрос результат.
'CONCAT' is not a recognized built-in function name.

блин из-за такой мелочи столько мороки ((
просто на сайтах, например, там вручную наверно все прописывают Ukraine(UA), Russia(RU) и т.д. а тут из БД ...
а на счет BindingList, эти датасорсы, биндингсорсы и т.д. не разбираюсь в них (( наверно не жизненно важно пока что
0
fatalerror
2 / 2 / 0
Регистрация: 13.06.2012
Сообщений: 6
12.07.2012, 22:00 16
Этот запрос возвращает резултат?
Цитата Сообщение от mikh Посмотреть сообщение
select CountryName + ' ' + CountryCode as country from table
Попробуй так:
C#
1
2
3
4
5
6
7
SqlCommand cmd1 = new SqlCommand(queryString1, connection);
                DataSet dataset = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter(cmd1);
                da.Fill(dataset);
                this.comboBox1.DataSource = dataset.Tables[0];;
                this.comboBox1.DisplayMember = "country";
                this.comboBox1.ValueMember = "CountryCode";
1
mikh
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
13.07.2012, 10:12  [ТС] 17
ошибка была вот почему:
в запросе "клеиться" 2 столбца в один и называется "country", а столбца "CountryCode" нет, по этому ValueMember ничего и не присваевается.

вот то что мне надо было:
SQL
1
SELECT '(' + CountryCode + ') ' + CountryName AS country, CountryCode FROM table1
C#
1
2
3
4
5
6
7
8
9
10
11
12
string queryString1 = "select '(' + CountryCode + ') ' + CountryName as country, CountryCode from table1";
using (SqlConnection connection =
               new SqlConnection(connectionString))
            {
                SqlCommand cmd1 = new SqlCommand(queryString1, connection);
                DataTable tbl1 = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(cmd1);
                da.Fill(tbl1);
                this.comboBox1.DataSource = tbl1;
                this.comboBox1.DisplayMember = "country";
                this.comboBox1.ValueMember = "CountryCode";
            }
0
mikh
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
20.07.2012, 11:59  [ТС] 18
Появилась новая задачка.
Нужно начать выбор с определенного элемента.

допустим у меня список:
(GR) Греция
(DK) Дания
(UA) Украина
(RU) Россия
(DE) Германия

выбор начинается с Греции так как она вверху. Мне надо что бы при загрузке формы выбор начинался с той страны которой я захочу. Тоесть у меня будет переманная в которую будет передаваться DisplayMember или же ValueMember, и по этому можно определить с какого элемента надо начинать выбор.
что бы загружалась форма и в comboBox'е сразу была выбрана нужная страна.
0
mikh
6 / 6 / 3
Регистрация: 20.04.2012
Сообщений: 303
23.07.2012, 11:02  [ТС] 19
апну, проблемма актуальна.
как установить начальный элемент для выбора тот который мне нужен?

Добавлено через 46 минут
решил:
просто при заполнении формы и, соответственно, заполнении comboBox'а нужно SelectedValue присвоить то значение с которого хочешь начинать выбор.
тоесть, если у меня ValueMember элемент из таблици, список comboBox'а отсортирован по алфавиту, то у меня он начинается со слов на букву "А".
У меня есть переменная которая называется СС (от CountryCode) и в ней код страны с которой я хочу начать выбор в comboBox'е, то если написать:
C#
1
this.comboBox1.SelectedValue = CC;
список стран автоматом прокрутится до этого элемента.
0
23.07.2012, 11:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2012, 11:02

Как отобразить в ComboBox несколько столбцов из БД
Есть SQL express удаленная база. Могу сделать обычный комбобокс, но тогда...

Заполнить ComboBox значениями двух столбцов
подскажите как можно сделать вопрос по сабжу? всё что нашел в инете это...

Работа с xml: распарсить ответ от сервера и поместить значения в массивы
У меня есть ответ от сервера подобный этому: <?xml version="1.0"...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru