2013-05-27 2 views
0

У меня есть listbox1 - его источник данных - это столбец (productname).listbox selected item give me "System.Data.DataRowView", C# winforms

поэтому у меня есть в списке MultiSelection.

и им пытаются сделать MessageBox для всех вариант, который я выбрал, и это код:

foreach (object selectedItem in listBox1.SelectedItems) 
    { 
     MessageBox.Show((selectedItem.ToString() + Environment.NewLine)); 
    } 

проблема заключается в том, что им получить это значение вместо System.Data.DataRowView

ответ

3

Как вы заполняете список (то есть, что такое источник данных)?

Ваш комментарий я бы сказал DataView (и которым содержит DataRowView ...)

Так что вам просто нужно бросить SelectedItem в DataRowView для того, чтобы получить значение из этого DataRowView:

foreach (object selectedItem in listBox1.SelectedItems) 
{ 
    DataRowView dr = (DataRowView)selectedItem; 
    String result = dr["productname"].ToString; 
    MessageBox.Show(result + Environment.NewLine); 
} 

Разработчики VB.Net, которые могут попасть на этот пост, также могут быть заинтересованы в this.

+0

im получение этой ошибки: «System.Data.DataRowView» не содержит определения для «Item» и не используется метод расширения «Item», принимающий первый аргумент типа «System.Data.DataRowView» (вы отсутствуете директива using или ссылка на сборку?) « –

+0

Я использую system.data –

+0

См. обновленный ответ, это была проблема преобразования VB C# http://stackoverflow.com/q/7873972/2387010 – Chris

-1

Попробуйте изменить с этим

ListBoxItem lbi ; 
String myStr ; 

for (int i =0; i <= listbox1.selecteditems.count-1 ; i++) 
    { 
     lbi = (ListBoxItem)(listBox1.ItemContainerGenerator.ContainerFromIndex(i)); 
     myStr += lbi + Environment.NewLine);    
    } 

MessageBox.Show(myStr); 
+0

получение этой ошибки: «selectedItem» является «переменной», но используется как «метод» –

+0

@ShmulikCohen: он обновлен .. попробуйте! – matzone