2013-11-20 3 views
0

У меня есть поле со списком, которое заполняется адаптером данных. У меня нет проблем с заполнением combobox вообще, но я пытаюсь понять, как захватить displaymember, а не выбранное значение.Grab displaymember из combobox и использовать для заполнения текстового поля

cotcommand = new SqlCommand(); 
       cotguestadapter = new SqlDataAdapter(); 
       cotcommand.Connection = cottageconnect; 
       cotcommand.CommandText = "SELECT Phone, (\"Last Name\" + ', ' + \"First Name\") AS NAME FROM Guests ORDER BY NAME"; 
       cotguestadapter.SelectCommand = cotcommand; 
       cotguestadapter.Fill(cotguestdataset); 
       cboGuests.DataSource = cotguestdataset.Tables[0]; 
       cboGuests.DisplayMember = "NAME"; 
       cboGuests.ValueMember = "Phone"; 

Я могу легко получить ValueMember и делать то, что я хочу с ним, но я бы очень хотел, чтобы вытащить DisplayMember (который является каскадным именем) и отображения, что в текстовом поле. Мне нужно отображаемое имя для окна подтверждения, которое пользователь может выбрать «да», а затем мой код будет вставлять регистрацию в базу данных в это время.

Могу ли я получить displaymember из combobox и использовать его в текстовом поле?

+0

Ничто, как положить SQL вещи как строки в коде пользовательский интерфейс. напоминает мне или «хорошие« VB6 дни ». –

+0

Да ... У меня есть старый учитель;) Любая помощь с моим вопросом? – Marty

+0

Да, не пытайтесь «читать данные» из пользовательского интерфейса. Пользовательский интерфейс не является данным, даже в winforms. Просто возьмите элемент данных из любого 'IEnumerable', с которого вы его начинаете. –

ответ

0

DisplayMemberв этом случае фактически имя столбца, так что вы можете просто извлечь основные данные, связанный пункт и получить значение:

не
var someDisplay = ((DataRowView) someItem).Row[comboBox1.DisplayMember]; 
//someDisplay is still an object, just cast or convert to what you want. 
+0

После DataRowView у вас есть «someItem». Этот элемент предназначен для таблицы, из которой это извлекается? Я попытался ввести NAME, поскольку это было имя столбца, и это, похоже, не работает. Я пробовал: строка someDisplay = ((DataRowView) NAME) .Row [cboGuests.DisplayMember]; – Marty

+0

@ user2966944 'someItem' вот какой-то элемент вашего' comboBox1', например 'comboBox1.Items [0]', вы также можете сделать какой-то цикл через 'comboBox1.Items' и передать в каждый элемент как ту же роль с 'someItem' в моем коде и получить DisplayMember как то, что вы хотите. –

+0

aaahhh ... Я вижу сейчас! Спасибо, сэр. Это сделало то, что я хочу, чтобы он делал по большей части. Теперь мне просто нужно выяснить, как получить правильный номер строки. Я могу выбрать 5-го человека в выпадающем списке, но он все равно отобразит человека первой строки, а не человека в 5-й строке из базы данных. Если это имеет смысл. Например: если я выбрал 5-е имя, то я бы хотел, чтобы это было comboBox1.Items [4] – Marty

Смежные вопросы