2017-01-12 6 views
0

製品カテゴリのIDには2つのコンボボックス(CMBIDCAT)、製品カテゴリには(CMBCATNAME) 。 (CMBIDCAT)コンボボックスからカテゴリのIDを選択すると、その選択したカテゴリの名前を(CMBCATNAME)コンボボックスに表示します。私はSQLデータベースを使用し、データにアクセスするクラス、コンボボックス、テキストボックスなどを埋めるためのストアドプロシージャ、フォルダを使用して作業を整理します。私は2つのコンボボックスを持っています。別のコンボボックスを1つ埋めて、コンボボックスのデータをSQLデータベースから取得します。

I organize my work with folders and classes like this

私のコンボボックスにデータを埋めるために使用される次のコード:

public partial class ADD_PRODUCT_FORM : Form 
{ 
    BL.CLS_PRODUCTS prd = new BL.CLS_PRODUCTS(); 

    public ADD_PRODUCT_FORM() 
    { 
     InitializeComponent(); 
     CMBIDCAT.DataSource = prd.GET_ID_CATEGORIES(); 
     CMBIDCAT.DisplayMember = "ID_CAT"; 
     CMBIDCAT.ValueMember = "ID_CAT"; 
     CMBCATNAME.DataSource = prd.GET_ID_CATEGORIES(); 
     CMBCATNAME.DisplayMember = "CAT_NAME"; 
     CMBCATNAME.ValueMember = "CAT_NAME"; 
    } 
} 

私は誰かが適切な形で私の問題を説明することができます願っています。

答えて

0

2つのコンボボックスが必要な理由はありませんか?代わりに、IDと名前を次のように表示するコンボボックスを使用するとよいでしょう:

public partial class ADD_PRODUCT_FORM : Form 
{ 
    BL.CLS_PRODUCTS prd = new BL.CLS_PRODUCTS(); 

    public ADD_PRODUCT_FORM() 
    { 
     InitializeComponent(); 
     CMBIDCAT.DataSource = prd.GET_ID_CATEGORIES(); 
     CMBIDCAT.DisplayMember = "CAT_NAME"; 
     CMBIDCAT.ValueMember = "ID_CAT"; 
    } 
} 

これは1つのコンボボックスを表示します。それを開く(または値を選択する)と、IDと対応する名前が表示されます。選択した値には、次のようにアクセスできます。

private void GetComboValue() 
{ 
    var value = CMBIDCAT.SelectedItem as DataRowView; 
    if (value != null) 
    { 
     int id = value["ID_CAT"]; 
     string name = value["CAT_NAME"];   
    } 

    //OR if you just need Id 
    int id = Convert.ToInt(CMBIDCAT.SelectedValue); 
} 

DataSourceがDataTableであることを前提としています。

関連する問題