Windowsフォームでコンボボックスを作成しました。次に、プロパティに移動し、データ ソースをデータベースのテーブルに設定しました。表示メンバーと値メンバーを、コンボ ボックスのアイテムとして生成する値を含む列に設定します。しかし、アイテムのセットをコンパイルすると空になります。
このサイトとインターネットに同様の質問がたくさんあることを知っており、それらの解決策を数時間試しましたが、何もうまくいかないようです.
編集
これは、Windows フォームによって自動的に生成されたコードです。このコンボボックスに影響するコードは書いていません
// fieldsBindingSource2
//
this.fieldsBindingSource2.DataMember = "Fields";
this.fieldsBindingSource2.DataSource = this.tMSDataSet;
//
// FieldSelectionComboBox
//
this.FieldSelectionComboBox.BackColor = System.Drawing.SystemColors.Info;
this.FieldSelectionComboBox.DataBindings.Add(new System.Windows.Forms.Binding("SelectedItem", this.fieldsBindingSource, "Field Name", true));
this.FieldSelectionComboBox.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.fieldsBindingSource, "Field Name", true));
this.FieldSelectionComboBox.DataSource = this.fieldsBindingSource2;
this.FieldSelectionComboBox.DisplayMember = "Field Name";
this.FieldSelectionComboBox.FormattingEnabled = true;
this.FieldSelectionComboBox.Location = new System.Drawing.Point(83, 3);
this.FieldSelectionComboBox.MaxLength = 50;
this.FieldSelectionComboBox.Name = "FieldSelectionComboBox";
this.FieldSelectionComboBox.Size = new System.Drawing.Size(121, 21);
this.FieldSelectionComboBox.TabIndex = 7;
this.FieldSelectionComboBox.ValueMember = "Field Name";
this.FieldSelectionComboBox.SelectedIndexChanged += new System.EventHandler(this.FieldSelectionComboBox_SelectedIndexChanged);
編集
これで何かが変わるかどうかはわかりませんが、コンボ ボックスはユーザー コントロールにあり、ユーザー コントロールをウィンドウに動的に追加します。
それ以来、私は別のアプローチを試みました。この方法では、データベースからすべての項目を読み取り、そのレコードをコンボ ボックスの項目に追加するだけです。しかし、これもうまくいきません。以下は、この試みの私のコードです。
SqlCommand query = new SqlCommand(SqlQuery, con);
SqlDataReader Reader = query.ExecuteReader();
AutoCompleteStringCollection List = new AutoCompleteStringCollection();
while (Reader.Read())
{
try
{
List.Add(Reader.GetString(0));
}
catch (InvalidCastException)
{
int t_listItem = Reader.GetInt32(0);
List.Add(t_listItem.ToString());
}
}
NewTextBox.AutoCompleteMode = AutoCompleteMode.Suggest;
NewTextBox.AutoCompleteCustomSource = List;
次に、読み取られているフィールドの一部でエラーが発生します。エラーは、SQLException が処理されませんでした。無効なオブジェクト名です。
タイプや長さなど、無効な部分を絞り込んでみましたが、何も見つかりませんでした。データベース内のすべての値は varchar(50) であり、すべて受け入れられ、テーブルに適切に入力されます。例外をスローする単語の例は「Initiation」と「Trainer」ですが、「[First Name]」のようなものは機能します。
いずれかのアプローチに関するヘルプは素晴らしいでしょう。