【问题标题】:C# WPF - Get the selected items from a ListViewC# WPF - 从 ListView 中获取所选项目
【发布时间】:2014-01-03 10:03:43
【问题描述】:

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

当在我的名为 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"]);

当我在名为 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 和 ID=5,我将获得 2 次 ID=5。为什么?

谢谢。

【问题讨论】:

  • 检查SelectionMode 属性
  • SelectionMode 设置为 Multiple

标签: c# wpf listview


【解决方案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"]);

【讨论】:

    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 2011-05-29
    相关资源
    最近更新 更多