可能原因:
1、下拉選單的選項資料繫結晚於 DataGridView 的資料繫結
2、下拉選單的 DataPropertyName 屬性,比 DisplayMember、ValueMember 早賦值
3、賦予 DataGridView 下拉選單的值,不在下拉選單的選項裡
4、賦予 DataGridView 下拉選單的值型別,與下拉選單的值型別不一致
網路上許多文章都指出,可用 DataError 事件排除掉這個錯誤提示,但這只是治標不治本。換句話來說就只是讓程式不提示這個錯誤而已,根本的問題還是沒解決。以下是筆者建議的解決方式:
1、當然就是先繫結下拉選項資料,再繫結 DataGridView,無論你的程式結構有多少層。
2、當然就是調整 DataPropertyName、DisplayMember、ValueMember 賦值的順序。
3、處理不在選項內的值,選項若有自己的資料來源,那麼就連同這個資料來源加上不在選項內的項目,全部用 Items.Add 做繫結,不要用 DataSource。要注意!Items.Add 和 DataSource 無法並存,關於這個部份,可以參考微軟官方的 MSDN 說明,重點摘錄如下:
Items 或 DataSource 属性用于填充组合框的选项。 如果已将字符串添加到 Items,则无需设置 ValueMember 和 DisplayMember 属性,因为添加的每个字符串都会用于值和显示。
4、型別不一致的狀況,目前還沒遇到,故暫時不給意見。