0

コンボ ボックスの値メンバーを設定しようとしています。この上の 2 行には、別のフィールドのほぼ同一のコードがあり、正常に動作します。

cboCommodity.DataSource = rwDB.getCommodities();
cboCommodity.DisplayMember = "Description";
cboCommodity.ValueMember = "Com. ID#"; //<< Throws exception

rwDB.getCommodities()DataTableビューからクエリを実行するストアド プロシージャからオブジェクトを返します。

エラーが表示されます: Cannot bind to the new value member. Parameter name: value

私はそれについてグーグルで調べましたが、何も役に立たないようです。

この列にはヌルはありません。列名を確認しましたが、存在します。この列はテーブルの pk です。私はブラケットを試しました"[Com. ID#]"。ピリオドと # のエスケープも検討しましたが、必要ありません。スペースを含む、正常に機能する前のステートメントのビューの列を使用しています。実行が停止し、列が入力済みとしてリストされているときにローカルを見たことさえあります(そして、安全のために値をコピーして貼り付けました)、それを機能させることができず、エラーの詳細が十分ではありません自分でそれを理解すること。私はこのプロジェクトで 50 回ほど行った作業にかなり行き詰まっており、控えめに言ってもイライラしています。

これが sp が返すものです。Vendorとして入れてみましたがValueMember、問題なく動作します。その最初の列で何が問題を引き起こしているのかわかりません。

SPリターンのサンプルイメージ

私が尋ねるほとんどの質問と同様に、これは私が見落としていた本当にばかげたことだと確信しています。お時間をいただきありがとうございます。

4

1 に答える 1

0

以下で試してください

DataTable dt = rwDB.getCommodities(); 
var column = dt.Columns.Cast<DataColumn>().FirstOrDefault().ColumnName;
cboCommodity.DataSource = dt;
cboCommodity.DisplayMember = "Description";
cboCommodity.ValueMember = column;

編集

他にオプションがない場合は、列名を変更できます

DataTable dt = rwDB.getCommodities();
dt.Columns["Com. ID#"].ColumnName = "ComID";
cboCommodity.DataSource = dt;
cboCommodity.DisplayMember = "Description";
cboCommodity.ValueMember = "ComID";
于 2013-05-06T13:43:45.113 に答える