私は VS2010 と C# を初めて使用し、VB6 アプリを .net に変換しようとしていますが、ComboBox を正しく動作させる際に問題が発生しています。「Data Binging Mode」で ComboBox をバインドしようとしていますが、うまくいきません。テストを実行すると、ComboBox はレコードに関連付けられた整数のみを表示しますが、基になる ComboBox データ ソースに関連付けられた「表示メンバー」は表示しません。ドロップダウン リストは正しく表示され (緑、青、黄)、リストから項目を選択して [保存] をクリックすると、「入力文字列の形式が正しくありませんでした」という形式の例外が発生します。しかし、私のデータは正しいようです。私はすべてを読んで試しましたが、私の人生では、自分が間違っていることを理解できないようです。
うまくいけば、誰かがこれに光を当てることができます…</p>
マスター テーブルのデータ ソースから「ChoiceID」フィールドをコンボ ボックス タイプとして選択するテストを作成しました。グラフィカル インターフェイスを使用して、「データ ソース」を「choiceBindingSource」に設定しました。「表示メンバー」を「選択肢」に設定しました。「Value Member」を「ChoiceID」に設定しました。
注:これをプログラムで実行しても同じ結果が得られました。
マスターテーブル: ID(整数)、ChoiceID(整数)
データ:
1,1
2,1
3,2
選択肢テーブル: ChoiceID(整数)、選択肢(テキスト)
データ:
1、グリーン
2、青
3、イエロー
テストを実行すると、コンボボックスに 1 NOT "Green" が表示されます。
質問:
まず、ComboBox ビンギングで、ComboBox が Master テーブルの「ChoiceID」を Choice テーブルの「ChoiceID」に正しくバインドしないのはなぜですか? 次に、データが正しい形式であると思われる場合に、ドロップダウンから Item を選択すると、形式の例外が発生する理由です。
ありがとう、JC
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void masterBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.masterBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.tabTestDataSet);
}
private void Form2_Load(object sender, EventArgs e)
{
this.choiceComboBox.DataSource = choiceBindingSource;
this.choiceComboBox.DisplayMember = "Choice";
this.choiceComboBox.ValueMember = "ChoiceID";
// TODO: This line of code loads data into the 'tabTestDataSet.Master' table. You can move, or remove it, as needed.
this.masterTableAdapter.Fill(this.tabTestDataSet.Master);
// TODO: This line of code loads data into the 'tabTestDataSet.Choice' table. You can move, or remove it, as needed.
this.choiceTableAdapter.Fill(this.tabTestDataSet.Choice);
}
}