[英]how to get the selected values of Listbox in c#
我已经绑定了列表框,其中列表框的数据源是列表。如何在列表框中获取选定列表项的选定值,我的示例代码如下
pdfList = attendanceDetailsPresenter.GetPredefinedDetails();
this.lstCompanies.DataSource = pdfList;
this.lstCompanies.DisplayMember = "CompanyName";
this.lstCompanies.ValueMember = "CompID";
this.lstDepartments.BindingContext = new BindingContext();
this.lstDepartments.DataSource = pdfList;
this.lstDepartments.DisplayMember = "DepartmentName";
this.lstDepartments.ValueMember = "DeptID";
if (lstCompanies.SelectedItems.Count < 0)
{
MessageBox.Show("Please Select Any one Company");
return attendanceCalculationDetailsDataList;
}
else
{
for (int i = 0; i < lstCompanies.SelectedItems.Count; i++ )
{
attendanceCalculationDetailsData.CompanyID.Add(int.Parse(lstCompanies.SelectedValue.ToString()));
}
}
任何人都可以解决我的问题。
首先,列表的Count
永远不能小于零。 始终>= 0
。
然后,当您对列表进行数据绑定时,这些项目通常是DataRowView
类型的(应该可以通过调试应用程序进行验证)。 如果正确,则必须将每个选定的项目DataRowView
为DataRowView
,然后将其Row
属性的值DataRowView
为所需的类型。
我只是注意到,在以下循环中,您甚至没有使用选定的项,而是始终使用SelectedValue
:
for (int i = 0; i < lstCompanies.SelectedItems.Count; i++ )
{
attendanceCalculationDetailsData.CompanyID.Add(int.Parse(lstCompanies.SelectedValue.ToString()));
}
尝试将其更改为:
for (int i = 0; i < lstCompanies.SelectedItems.Count; i++ )
{
attendanceCalculationDetailsData.CompanyID.Add(((<WhatEverClassYouUse>)lstCompanies.SelectedItems[i]).CompanyID);
}
说明:如果选择了列表中的多个项目,则将这些项目添加到SelectedItems
集合中。 您可以迭代这些项目。 每个项目将是DataRowView
的对象(将数据绑定到DataTable
或DataView
)或集合中的类。
正如您没有告诉我们GetPredefinedDetails
返回的对象类型GetPredefinedDetails
,我将其替换为WhatEverClassYouUse
。 将此类型转换为正确的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.