2014-01-03 3 views
0

У меня есть listview с несколькими столбцами. Данные привязываются к DataView. Первый столбец - это идентификатор, второй столбец - это имя.C# WPF - Получить выбранные элементы из ListView

Когда один элемент выбран на моем ListView имени lstInterrogateur, я получаю ID так:

DataRowView CompRow; 
string InsertQuery = "INSERT INTO interrogateur_matiere (idinterrogateur_matiere, idMatiere, idInterrogateur) VALUES "; 
int SComp, i=1, total; 
long idInterrogateur, idMatiere; 

SComp = lstInterrogateur.SelectedIndex; 
CompRow = lstInterrogateur.Items.GetItemAt(SComp) as DataRowView; 
idInterrogateur = Convert.ToInt16(CompRow["idInterrogateur"]); 

И когда несколько элементов выбираются на моем ListView имени lstMatiereInterrogateur, я получить идентификатор так:

total = lstMatiereInterrogateur.SelectedItems.Count; 

foreach (var item in lstMatiereInterrogateur.SelectedItems) 
{      
    SComp = lstMatiereInterrogateur.SelectedIndex; 
    CompRow = lstMatiereInterrogateur.Items.GetItemAt(SComp) as DataRowView; 
    idMatiere = Convert.ToInt16(CompRow["idMatiere"]); 
    InsertQuery += "(NULL, '" + idInterrogateur + "', '" + idMatiere + "')"; 
    if (total != i) 
     InsertQuery += ", "; 
     i++; 
    } 
} 

Но тогда я получаю только последний идентификатор. Например, я выбрал 2 элемента ID = 3 и ID = 5, я получу 2 раза ID = 5. Зачем?

Спасибо.

+0

Проверьте 'SelectionMode' недвижимости – Ravi

+0

SelectionMode установлен on Multiple – Alexking2005

ответ

1

Вы не можете использовать SelectedIndex, чтобы получить каждый элемент в цикле через SelectedItems. Вместо этого, доступ к ним с помощью переменной цикла:

foreach (var item in lstMatiereInterrogateur.SelectedItems) 
{      
    CompRow = item as DataRowView; 
    idMatiere = Convert.ToInt16(CompRow["idMatiere"]); 
    ... 
} 

Аналогично можно использовать SelectedItem вместо SelectedIndex доступ к одному выбранному:

CompRow = lstInterrogateur.SelectedItem as DataRowView; 
idInterrogateur = Convert.ToInt16(CompRow["idInterrogateur"]); 
+0

Спасибо, что отлично работает! – Alexking2005

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