Получить SelectedItems из базы данных ListBox

Мне нужно получить значения из выбранных элементов из списка, который привязывается к базе данных. Но если я попытаюсь

listBoxAtribute.SelectedItems[0].ToString()

он возвращает System.Data.DataRowView

Есть ли способ преобразовать данные из DataRowView в string?

Моя идея выглядит так:

for(int i = 0; i < listBoxAtribute.SelectedItems.Count; i++)
{
  MessageBox.Show(listBoxAtribute.SelectedItems[i].Tostring);
}

Большое спасибо за любой ответ.


person BeerMaker    schedule 20.06.2012    source источник


Ответы (3)


Попробуйте сначала преобразовать выбранный элемент списка в DataRowItem и получить доступ к значению столбца, передав имя столбца индексатору.

Вот образец

((DataRowView)Listbox.SelectedItem)["<column_name>"].ToString();
person user968441    schedule 20.06.2012

Если вы хотите показать значение первого столбца, возьмите первый элемент listBoxAtribute.SelectedItem как

for(int i = 0; i < listBoxAtribute.SelectedItems.Count; i++)
{
  MessageBox.Show(listBoxAtribute.SelectedItems[i].Item[0]); 
}
person Damith    schedule 20.06.2012

В предположении, что вы видите, видимо, один конкретный столбец из указанных записей, управляемых базой данных, это будет означать, что у вас есть свойство DisplayMember набора списка. Возможно, также ValueMember, если вы где-нибудь используете EditValue. Я бы написал что-нибудь в этом духе.

((DataRowView)listBoxAtribute.SelectedItems[0])[listBoxAtribute.DisplayMember].ToString();

Таким образом, вы получите именно то, что пользователь увидит на экране. Теперь, если вам нужен фрагмент данных, отличный от показанного на экране, вам нужно будет использовать подход user968441 и жестко запрограммировать имя столбца. Но это также относительно легко.

person Nevyn    schedule 20.06.2012