2013-06-03 23 views
0

我有綁定列表框,其中列表框的數據源是list.how可以我得到選擇的列表項的所選擇的值在listbox.my示例代碼如下如何獲得列表框的選定值在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())); 
      } 
     } 

任何人都可以解決我的問題。

+0

爲什麼不循環'foreach(var selectedItem in lstCompanies.SelectedItems)'? –

+2

另一個可能的錯誤:我不認爲這將是真實的:「lstCompanies.SelectedItems.Count <0」。我相信伯爵不會是負面的。 – neontapir

+0

您是否嘗試過在for循環中設置斷點以查看發生了什麼? – emd

回答

1

首先,列表中的Count永遠不能小於零。它總是>= 0

然後,當您將數據綁定到列表時,這些項目通常是DataRowView(您應該可以通過調試應用程序來驗證)。如果這是正確的,您必須將每個選定的項目投射到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(當數據綁定到DataTableDataView)或集合中的類時的對象。

由於您沒有告訴我們GetPredefinedDetails返回的對象類型,我用WhatEverClassYouUse替代了它。將其轉換爲正確的類型。

+0

我認爲只有在DataSource類型爲DataTable或DataView時,該項的類型纔是DataRowView,但似乎我們不確定DataSource是什麼類型。 –

+0

嗯,不確定。另外我說他應該通過正確調試才能找到答案。 –

+0

@ThorstenDittmar在嘗試將選定的項目轉換爲DataRowview時顯示錯誤。您可以通過其他方式來執行此操作。 – Siva

相關問題