一个完整的菜鸟在这里讲话。我有一个与MySQL交互的C#接口。
我的问题是我想显示一个DataGridView,但是我想更改列的内容。我想用代码更容易理解。
private void CargaEstados()
{
conexion.Open();
txtNomMun.Focus();
try
{
DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter("SELECT cveestado, nombre FROM tbestados", conexion);
da.Fill(ds, "FillDropDown");
cbEstado.DisplayMember = "Nombre";
cbEstado.ValueMember = "CveEstado";
cbEstado.DataSource = ds.Tables["FillDropDown"];
conexion.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void CargaDataGridView()
{
conexion.Open();
try
{
cmd.CommandText = "select cvemunicipio, nombre, cveEstado from tbMunicipios";
rd = cmd.ExecuteReader();
while (rd.Read())
{
this.dataGridView1.Rows.Add(rd.GetValue(0), rd.GetValue(1), rd.GetValue(2));
}
conexion.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
在CargaEstados()中,我在组合框(cbEstado)中显示名称(nombre),但获得ID(cveestado){显示如下}。
"insert into tbmunicipios (nombre, cveestado) values ('" + txtNomMun.Text + "', '" + cbEstado.SelectedValue.ToString() + "')";
在DataGridView中,我想与id相反,我想显示名称,但是我不确定该怎么做。
我的SQL表是:
Create DataBase CatalogoMun;
use CatalogoMun;
Create table tbEstados
(
CveEstado int not null,
Nombre varchar (45) not null,
Constraint pkCveEstado Primary Key (CveEstado)
)Engine=Innodb;
Create table tbMunicipios
(
CveMunicipio int not null AUTO_INCREMENT,
Nombre varchar (45) not null,
CveEstado int not null,
Constraint pkCveMunicipio Primary Key (CveMunicipio),
Constraint fkCVeEdo Foreign Key (CveEstado) references tbEstados (CveEstado)
)Engine=Innodb;
为了实例化,如果我在tbMunicipios中有(1,Villahermosa,27),我想显示(1,Villahermosa,Tabasco)。
感谢:D
最佳答案
这可以通过SQL join完成
该语句如下所示:
cmd.CommandText = "SELECT m.cvemunicipio, m.nombre AS NombreA, e.nombre AS NombreB FROM tbMuncipios m INNER JOIN tbEstados e ON m.CveEstado = e.CveEstado";
关于c# - 在C#和MySQL中使用DataGridView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16125513/