2013-04-20 1 views
0

Полный номер, говорящий здесь. У меня есть интерфейс C#, в котором я взаимодействую с MySQL. Моя проблема в том, что я хочу показать DataGridView, но хочу изменить содержимое столбца. Я думаю, что с кодом это более понятно.Использование DataGridView с C# и MySQL

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() отобразить в Combobox (cbEstado) имя (Nombre), но я получить идентификатор (cveestado) {} показано ниже.

"insert into tbmunicipios (nombre, cveestado) values ('" + txtNomMun.Text + "', '" + cbEstado.SelectedValue.ToString() + "')"; 

В DataGridView Я хочу к противоположному, с идентификатором, я хочу, чтобы отобразить имя, но я не уверен, как это сделать.

Мои таблицы 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; 

НАПРИМЕР, если у меня есть (1, Villahermosa, 27) в tbMunicipios, я хочу показать (1, Villahermosa, Tabasco).

БЛАГОДАРНОСТЬ: D

ответ

1

Это выполнить в состоянии с 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"; 
+0

Благодаря @Kaiwa, я пытался, но он не работает на всех :( –

+0

Что-то говорит? Ошибка SQL некоторая? – Kaiwa

+0

В нем говорится «неизвестный столбец« m.pkcveestado »в« on clause », @Kaiwa –

Смежные вопросы