[ad_1]
こんにちは、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);
[ad_2]
コメント