C#WPF - 从ListView获取所选项目

时间:2014-01-03 10:03:43

标签: c# wpf listview

我有一个包含多列的列表视图。数据与DataView绑定。第一列是ID,第二列是名称。

当我的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时,我会得到这样的ID:

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++;
   }
}

但是我只得到最后一个ID。例如,我选择2项ID = 3 et ID = 5,我将获得2次ID = 5。为什么呢?

感谢。

1 个答案:

答案 0 :(得分: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"]);