我有两个组合框,我想用另一个组合框填充一个组合框,组合框的数据来自SQL数据库

时间:2017-01-12 02:53:54

标签: c# sql winforms combobox

我有两个组合框(CMBIDCAT)用于产品类别的ID,(CMBCATNAME)用于产品类别的名称。当我从(CMBIDCAT)组合框中选择类别ID时,我想在(CMBCATNAME)组合框中显示所选类别的名称。我使用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";
    }
}

我希望有人能以适当的形式解释我的问题。

1 个答案:

答案 0 :(得分:0)

我没有看到为什么你需要两个组合框的原因?相反,你最好使用一个comboBox,它显示Id和Name,如下所示:

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";
    }
}

这将显示一个comboBox。如果您打开它(或选择一个值),您会看到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。