【解決方法】コンボボックスのアイテムのIDを取得する方法


こんにちは、C# のコンボ ボックスで選択したアイテムの ID を取得したいと考えました。
次のコードを試して、選択したアイテムの値を取得しましたが、データベースから ID を取得する方法がわかりません。

C#
int ProductIndex = ProductsComboBox.SelectedIndex;
      string productName = ProductsComboBox.Items[ProductIndex].ToString();

解決策 1

ProductsComboBox に含まれるクラスが何であれ、ToString をオーバーライドして、人間が判読できる値を提供していると仮定します。 その場合は、オブジェクトをクラスにキャストするだけです。

C#
int ProductIndex = ProductsComboBox.SelectedIndex;
MyClass selected = ProductsComboBox.Items[ProductIndex] as MyClass;
if (selected != null)
   {
   string productName = selected.ProductName;
   ...
   }

またはより良い:

C#
MyClass selected = ProductsComboBox.SelectedItem as MyClass;
if (selected != null)
   {
   string productName = selected.ProductName;
   ...
   }

おそらく、あなたのクラスにはすでに ID が含まれています!

解決策 2

コンボボックスにバインドするときは、display member プロパティを使用して name を表示し、valuemember プロパティを Id に表示します。

C#
CmbProduct.DataSource=datatable1;
CmbProduct.DisplayMember="ProductName";
CmbProduct.ValueMember="ProductId;
CmbProduct.DataBind();

次に、コンボボックスで選択されたインデックスが変更され、

C#
int ProductIndex = ProductsComboBox.SelectedIndex;//this will give index
string productName = ProductsComboBox.Text.ToString()//this will give DIsplay name;
int ProductId=ProductsComboBox.SelectedValue.ToString();//this will give product Id

解決策 5

選択した項目を「ComboboxItem」として引き出し、そこから「値」を取得できます。
Int64.Parse((ProductsComboBox.SelectedItem as ComboboxItem).Value.ToString());

解決策 3

2 つの列を持つ sqlServer にテーブルを作成します。 テーブルを myTable として保存します。 Product の列を 1 つ作成し、PRODUCT という名前を char として付けます。 そして、ID という名前の ProductID を char として格納するためのもう 1 つの列。 以下のコードを使用して、データベースから読み取ります。

C#
SqlConnection con=new SqlConnection("Connection string");

SqlCommand cmd=new SqlCommand("SELECT ID FROM myTable WHERE PRODUCT='" + ProductsComboBox.Items[ProductIndex].ToString()+"'");

if (con.State == ConnectionState.Closed)
     con.Open();

SqlDataReader rdr = cmd.ExecuteReader();          
while (rdr.Read())
{
     string strID=(string)rdr["ID"];
}

その場合、strID は製品の ID になります。

解決策 4

C#
  object comboValue;
  private void comboFill()
  {
      DataTable dt = DataBase.GetData("Select CategoryName, Id from Category");
      combxgrup.DataSource = dt;
      combxgrup.DisplayMember = "CategoryName";
      combxgrup.ValueMember = "Id";
      comboValue = combxgrup.SelectedValue;
  }

********************************************************************************
 MessageBox.Show(comboValue);

コメント

タイトルとURLをコピーしました