datagridviewcomboboxcolumn
バインドされていない datagridview 内でを使用する場合、ケースに奇妙な問題があります。列には最初に有効な値が取り込まれます。その一部はすべて大文字で、一部は大文字と小文字が混在していますが、常に一意です。たとえば、「AB」、「AC」、「あいだ」、「AltCurr」、「BE」などです。
大文字の項目のいずれかを選択すると、すべて正常に機能します。ただし、セルのドロップダウンから大文字と小文字が混在する項目の 1 つを選択すると、「セルには無効なデータが含まれています」という DataError イベントが発行され、セルは「AB」を選択します (つまり、選択が見つからないため、デフォルトになります)。最初のエントリに)。
すべてのリスト項目を大文字に変更すると、問題は発生しません (ただし、これは実際にはオプションではありません!)。
BOUND datagridview コンボ列の大文字と小文字の区別に関する多くのコメントを読みました。解決策は、基になるデータテーブルの大文字と小文字の区別オプションを変更することですが、特定のバインドされていない問題を克服するものは何もありません。
他の誰かがこれに遭遇しましたか? もしそうなら、どのように修正しましたか?
編集: 要求されたコード サンプル...
Datagridviewcombobox 列は、デザイナーで既に作成されています (列 #2)。オブジェクトのコレクションから次のように設定されます。
m_subjectList = new SubjectList
for each sj as Subject in m_subjectlist
ctype(dgv.columns(2),datagridviewcomboboxcolumn).items.add(sj.SubjectCode) 'a string value
next
行は、基になるデータテーブルから手動で追加されます。
for each dr as datarow in ds.tables("Mappings").rows
dim r as integer = dgv.rows.add
dgv.rows(r).cells(2).value = dr("SubjectCode") 'varchar(10)
next
この時点まではすべて正常に動作します。DGV は、セル コンボのすべての値で正しく表示されます。これ以上コードは必要ありません。
ここで、これらの行のいずれかのドロップダウンをクリックして件名を変更すると、「AiDA」または「AltCurr」項目 (つまり、大文字と小文字が混在するもの) を選択しない限り、すべて正常に機能します。dataerror コンテキストは Formatting | 画面。
すべて大文字のリスト項目を選択しても、問題は発生しません。コンボセルがオブジェクトコレクションで大文字と小文字が混在するアイテムを見つけていないように思えます-基になるコンボのオブジェクトコレクションの大文字と小文字の区別と、コレクション内の有効性をチェックするためにDGVが使用するものの大文字と小文字の区別に違いがあります。