1

首先,提前感谢您的任何回答。我是一个完整的菜鸟客栈 C#,到目前为止它非常有趣,但也很复杂。我的问题是这样的:

我将 SQL 数据库连接到 C#,我已经在组合框中显示了“名称”列,但我需要使用“id”列。我想用代码更容易理解。

(我不打算放连接的代码,因为我认为它是无关紧要的)。

private void Form1_Shown(object sender, EventArgs e)
{
    conexion.Open();
    MySqlCommand cm = new MySqlCommand("select * from tbestados", conexion);
    try
    {
        MySqlDataReader dr = cm.ExecuteReader();
        while (dr.Read())
        {
            comboBox1.Items.Add(dr["nombre"]);
        }
        dr.Close();
        dr.Dispose();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message,
                        Application.ProductName,
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Error);
    }
    conexion.Close();
}

private void button1_Click(object sender, EventArgs e)
{
    //When I press this button, i want to display the "id" of my table
    MessageBox.Show(Convert.ToString(comboBox1.ValueMember));
}

我将添加一些 MySql 语句以更进一步。

insert into tbEstados (CveEstado, Nombre) values (1, "Aguascalientes");
insert into tbEstados (CveEstado, Nombre) values (2, "Baja California");
insert into tbEstados (CveEstado, Nombre) values (3, "Baja California Sur");

所以,如果我从我的 ComboBox 中选择“Baja California Sur”,我希望我的按钮显示“3”。

谢谢!

4

2 回答 2

2

我希望您的组合框代码如下所示:

<ComboBox  Name="comboBox1" Width="120" Height="22" ItemsSource="{Binding}"/>

并更新您的代码:

private void Form1_Shown(object sender, EventArgs e)
{
    conexion.Open();       
    try
    {           
       MySqlDataAdapter da = new MySqlDataAdapter("select * from tbestados", conexion);
       DataSet ds = new DataSet();
       da.Fill(ds, "tbestados");
       comboBox1.ItemsSource = ds.Tables[0].DefaultView;
       comboBox1.DisplayMemberPath = ds.Tables[0].Columns["Nombre"].ToString();
       comboBox1.SelectedValuePath = ds.Tables[0].Columns["CveEstado"].ToString(); 
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message,
                        Application.ProductName,
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Error);
    }
conexion.Close();
}

并将您的 vbutton 点击​​更新为:

private void button1_Click(object sender, RoutedEventArgs e)
{     
MessageBox.Show("Selected Nombre="+comboBox1.Text+" and CveEstado="+  comboBox1.SelectedValue.ToString());
} 
于 2013-04-20T03:26:55.867 回答
1

使用如下数据集将是一种更标准的方法。

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("SELECT Nombre,CveEstado from tbestados", s);
                da.Fill(ds, "FillDropDown");

comboBox1.ItemsSource = ds.Tables["FillDropDown"].DefaultView;
comboBox1.DisplayMemberPath = "CveEstado";
comboBox1.SelectedValuePath = "Nombre";
于 2013-04-20T03:13:05.520 回答