我有一个包含多列的列表视图。数据与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。为什么呢?
感谢。
答案 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"]);