在我的C#winforms中,我從DataTable綁定數據到DropDownList。數據在窗體中可見,但我無法獲取此DropDownList的SelectedValue。無法投入'System.Data.DataRowView'類型的對象來鍵入System.IConvertible
如果我訪問的SelectedValue那麼就說明這個錯誤:
unable to cast the object of type 'System.Data.DataRowView' to type System.IConvertible.
和應用程序關閉。
有兩個或三個其他DropDownList以相同的方式綁定,他們都工作正常。
爲DropDownList的代碼是:
LstDriverName.DisplayMember = "DriverName";
LstDriverName.ValueMember = "Driverid";
DriverDetail Driverdetails = new DriverDetail(Constr);
LstDriverName.DataSource = Driverdetails.SelectAllNames();
這裏Driverdetails.SelectAllNames()返回一個數據表。
如果我在即時窗口中檢查該值:
?LstDriverName.SelectedValue.ToString()
"System.Data.DataRowView"
,並在該消息中顯示的地方是:
NewBill = new TransportationBill(Constr);
NewBill.DriverId = Convert.ToInt32(LstDriver.SelectedValue);
'SelectAllNames()'返回什麼?選擇的值應該是對DataRowView對象的引用是非常奇怪的,但是如果這樣做肯定會導致當您嘗試將其傳遞給'System.Convert'中的任何東西時收到的錯誤。 – David 2011-04-04 11:03:54
DisplayMember和ValueMember區分大小寫。 – stuartd 2011-04-04 11:07:45
我敢打賭,這將是這裏的問題。由於區分大小寫的'ValueMember'不匹配,所以'SelectedValue'返回集合中的實際對象,而不是從對象中提取的值。 – 2011-04-04 11:09:28