C#:如何从存储过程在ComboBox中添加2个值

时间:2018-10-20 12:48:36

标签: c# sql combobox

我有两个问题,第一个是如何添加2个值,第二个是:如果我们添加2个值,那么当我们将combo-box值保存在数据库中时,我们需要更改代码(第二个问题是我也从代码中询问这个问题的结尾)?

我需要在ComboBox中的表dep_Iddep_Name中添加2个值;像这样:

(Department ID: Department Name) 

这是存储过程:

CREATE PROCEDURE [dbo]. SelectComoboxData_SP
AS
    SELECT dep_Id, dep_Name 
    FROM department

    RETURN 0

这是C#代码:

public void updateDepartmentList()
{
    refresh_DataGridView();

    SqlCommand cmd = new SqlCommand("SelectComoboxData_SP", con);
    cmd.CommandType = CommandType.StoredProcedure;

    con.Open();

    try
    {
        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            com_boxDepartment.Items.Add(dr["dep_Id"]);
            com_boxDepartment.SelectedIndex = 0;
        }

        dr.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show("<<<INVALID SQL OPERATION \n" + ex);
    }

    con.Close();
}

让我也知道当我从组合框中选择任何部门时,所以现在我编写了这段代码

cmd.Parameters.AddWithValue("@dId", com_boxDepartment.Text);

用于按ID保存,因此在组合框中添加2个值时,我们需要进行任何更改吗?

1 个答案:

答案 0 :(得分:0)

如果是我的C#,我会像这样(尽管我会使用强类型的数据集)

public void updateDepartmentList()
{
    refresh_DataGridView();

    SqlCommand cmd = new SqlCommand("SelectComoboxData_SP", con);
    cmd.CommandType = CommandType.StoredProcedure;

    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);

    com_boxDepartment.DataSource = dt;
    com_boxDepartment.DisplayMember = "dep_Name";
    com_boxDepartment.ValueMember = "dep_Id";
}

例如,您的组合将显示“历史部门”,但是当您要求输入.SelectedValue时,它将返回例如2(历史部门的ID)