2013-04-20 2 views
-1

Ну, это очень, ОЧЕНЬ широкий вопрос. Я провел много исследований, и я все еще смущен.Как правильно использовать DataGridView в C#

Итак, моя проблема в том, что у меня есть небольшая программа на C#, подключенная к базе данных SQL. Через интерфейс C# я могу вставлять данные в свою базу данных SQL (я знаю это, потому что я проверил его в MySQLWorkbench, и все там есть), но я хочу его увидеть, поэтому я мог бы редактировать, обновлять и стирать по мере необходимости; и для этого мне нужно использовать DataGridView, но это так, так сложно, я видел много информации, и все это меня путает намного больше.

Я собираюсь сделать почти полный CopyPaste моей программы C#:

private void Form1_Shown(object sender, EventArgs e) 
    { 
     conexion.Open(); 
     textBox2.Focus(); 
     try 
     { 
      DataSet ds = new DataSet(); 
      MySqlDataAdapter da = new MySqlDataAdapter("SELECT cveestado, nombre FROM tbestados", conexion); 
      da.Fill(ds, "FillDropDown"); 
      comboBox1.DisplayMember = "Nombre"; 
      comboBox1.ValueMember = "CveEstado"; 
      comboBox1.DataSource = ds.Tables["FillDropDown"]; 
      conexion.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Guardar(); 
    } 

    private void Guardar() 
    { 
     if (textBox2.Text == "") 
     { 
      MessageBox.Show("Ingrese un nombre", "Error"); 
      textBox2.Focus(); 
     } 
     else if (comboBox1.SelectedItem.ToString() == "") 
     { 
      MessageBox.Show("Elija un estado", "Error"); 
      comboBox1.Focus(); 
     } 
     else 
     { 
      conexion.Open(); 
      try 
      { 
       cmd.CommandText = "insert into tbmunicipios (nombre, cveestado) values ('" + textBox2.Text + "', '" + comboBox1.SelectedValue.ToString() + "')"; 
       cmd.ExecuteNonQuery(); 
       cmd.Clone(); 
       MessageBox.Show("Datos Guardados", "Mensaje"); 
       conexion.Close(); 
       textBox2.Text = ""; 
       comboBox1.Text = ""; 
       textBox2.Focus(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); 
      } 
     } 
    } 

С выше I отображает "Nombre" {имя}, но я получить "клаве" {Id}, в Combobox; и я хочу сделать то же самое с моим DataGridView; но я повторяю, я видел много информации, но все это путало меня намного больше.

И, просто чтобы быть ясно, я буду копировать-вставить мой SQL-код тоже:

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; 

Заранее спасибо за любые ответы: D

+1

bro попробуйте написать все на английском языке, чтобы каждый мог понять – rummykhan

+0

Да, я думаю, это крошечная ошибка, которую я сделал, но логика там есть. Я рассмотрю это для моих следующих вопросов @ rummykhan. –

+0

Я ответил, проверьте и скажите, что вы искали. – rummykhan

ответ

1

братан, что я рекомендую использовать DataTable вместо из DataSet, как это и перетащить DataGridView на вашем UI

private void Form1_Shown(object sender, EventArgs e) 
{ 
    conexion.Open(); 
    textBox2.Focus(); 
    try 
    { 
     DataTable dt = new DataTable(); 
     MySqlDataAdapter da = new MySqlDataAdapter("SELECT cveestado, nombre FROM tbestados", conexion); 
     da.Fill(dt); 
     //Here Comes your DataGridView 
     DataGridView1.DataSource = dt; 
     conexion.Close(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); 
    } 

} 

и лучшие практики, что я делаю, чтобы вызвать этот метод в Form_Load event

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