【问题标题】:Get ID of value in a ComboBox获取 ComboBox 中值的 ID
【发布时间】:2021-11-14 00:41:40
【问题描述】:

我已将如下数据带入组合框中。在我的“BRANDS”表中,第一列为brand_id,第二列为brand_name。我在组合框中获取名称,但是在将其保存到数据库时需要获取 id。我该怎么做?

void markaekle() {
    SqlCommand komut = new SqlCommand("Select * from MARKALAR", bgl.baglanti());
    SqlDataReader dr = komut.ExecuteReader();
    while (dr.Read())
    {
        comboBoxMarka.Properties.Items.Add(dr[1]);
    }
    bgl.baglanti().Close();
}

我需要使用如下按钮将 id 值保存到数据库中:

private void BtnAnaGrupKaydet_Click(object sender, EventArgs e){
    SqlCommand komut = new SqlCommand("INSERT INTO ANA_GRUP (marka_id,anagrup_isim,create_date) values (@p1,@p2,@p3)", bgl.baglanti());
    komut.Parameters.AddWithValue("@p1", int.Parse(comboBoxMarka.Text));
    komut.Parameters.AddWithValue("@p2", txtAnaGrup.Text);
    komut.Parameters.AddWithValue("@p3", dateAnaGrup.DateTime);
    komut.ExecuteNonQuery();
    bgl.baglanti().Close();
    MessageBox.Show("Ana Grup Sisteme Eklendi", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

【问题讨论】:

  • WinForms WPF????
  • 是的,WinForms。对不起,我忘了添加

标签: c# winforms combobox selectedvalue


【解决方案1】:

你可以做很多实现。

  1. 使用Dataset 并在执行查询后,您可以用结果填充数据集。所以你的数据集中有你所有的数据。 (定义您的全局数据库),然后当您的按钮点击时,您知道选择了组合框的哪个索引。 index 是数据集的索引,因此您可以访问 id。

  2. 最简单的方法是使用带有 ID 和名称的 Dictionary。之后同上。

总而言之,您需要有一个全局变量来存储查询结果的 Id 和 Name。此变量可以是字典或数据集或 ....

【讨论】:

    【解决方案2】:

    为了获得选定的值而不是文本。你可以像下面这样绑定组合框:

            List<DropDownKeyValue> list = new List<DropDownKeyValue>();
    
            List.Add(new DropDownKeyValue
            {
                ID = 1,
                Name = "Designation"
            });
    
            cmbSortBy.DisplayMember = "Name";
            cmbSortBy.ValueMember = "ID";
            cmbSortBy.DataSource = list;
    

    要获得您将使用的选定 ID:cmbSortBy.SelectedValue 对象。

    DropDownKeyValue类:

    public class DropDownKeyValue
                {
                    public int ID { get; set; }
                    public string Name { get; set; }
                }
    

    【讨论】:

      【解决方案3】:

      您需要将 ComboBox 绑定到 DataSource。最简单的方法是按照以下方式修改代码:

      SqlDataReader dr = komut.ExecuteReader();
      var dt = new DataTable();
      dt.Load(dr);
      yourComboBox.DataSource = null;
      yourComboBox.Items.Clear();
      yourComboBox.DisplayMember = "brand_name";
      yourComboBox.ValueMember = "brand_id";
      yourComboBox.DataSource = dt;
      

      您现在可以使用 yourComboBox.SelectedValue 访问 id。

      【讨论】:

        【解决方案4】:

        在下面的行中更改值,例如。

        komut.Parameters.AddWithValue("@p1",int.Parse(comboBoxMarka.SelectedValue.ToString()));
        

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-17
        相关资源
        最近更新 更多