1

データベースからのものに応じて、このアイテムを取得しましSqlCommandた。selectscombo-boxread

コンボボックスには 4 つの値が含まれています。(いずれかを選択する必要があります)

SQL DB から読み取られている値がコンボ ボックス項目の 1 つであるかどうかを確認する必要があるため、問題があります。

コードがどのように見えるべきか尋ねてもよろしいですか?

SqlCommand command= new SqlCommand("SELECT * FROM client WHERE ID_K='" + choose_id + "'", con);
con.Open();
SqlDataReader read= command.ExecuteReader();

if (read.Read())
{
     if (read["price"] != DBNull.Value)
     {
         cb_choose_price.SelectedItem = read.GetString(read.GetOrdinal("price"));
     }} con.Close();
4

2 に答える 2

2

コンボボックス コンポーネントのSelectedItemプロパティは、そこに格納されている実際のオブジェクト (またはこれらのオブジェクトへの参照) にバインドされます。表示された文字列で選択したアイテムを設定する場合は、アイテムのコレクションを取得し、それらを文字列にキャストしてから、適切なアイテムを選択する必要があります。Person タイプのコード サンプルを確認してください。

コンボボックスをデータソースにバインドすると、参照されたオブジェクトが ToString() メソッドを使用して表示されます。例えば:

class Person
{
   public string Name { get; set; }
   public int Age { get; set; }
}

var persons = new List<Person> { 
    new Person("Adam", 10), 
    new Person("Thomas", 20) };
comboBox.DataSource = persons;
comboBox.DisplayMember = "Name";

comboBox.SelectedItem = "Adam"; // this will not display a person named Thomas because the combobox is binded to the Person type
comboBox.SelectedItem = persons.Where(p => p.Name == "Thomas").Single(); // this will show Adam if it is available in the comboBox

コメントに基づく更新:

私はそれをすべて理解していると思いますが、選択する必要がある項目 (SQL DB からの文字列) がコンボボックスの項目のリストに存在するかどうかを確認する方法はありますか?

var item = comboBox1.Items.Cast<Person>();
bool isThereAdam = item.Any(i => i.Name == "Adam");
于 2013-09-22T15:44:32.027 に答える