2013-04-20 33 views
-1

好一个DataGridView,这是一个非常,非常广泛的问题。我做了很多研究,但我仍然感到困惑。如何正确使用C#

所以,我的问题是,我有连接到SQL数据库的小C#程序。 通过C#接口,我可以把数据插入我的SQL数据库(我知道,因为我查了一下它在MySQLWorkbench,数据都在那里),但我希望看到它,这样我就可以编辑,更新,并根据需要擦除;并且我需要使用DataGridView,但事实如此复杂,我已经看到了很多信息,并且这些信息让我更加困惑。

我会尽我的C#程序的一个几乎完整的copypaste:

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); 
      } 
     } 
    } 

通过以上我展示了“农布雷”(名称),但我得到了“来福” {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

兄弟尝试用英文写的一切,让每个人都能理解 – rummykhan 2013-04-20 07:14:56

+0

是啊,我想这是一个微小的失误我做了,但逻辑都在那里。我会考虑我的下一个问题@rummykhan。 – 2013-04-20 07:20:23

+0

我已经回答了,检查它并告诉我是你在看什么.. – rummykhan 2013-04-20 07:24:27

回答

1

的兄弟我的建议是使用DataTable代替的DataSet这样和你的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); 
    } 

} 

和最佳实践我在做什么是调用此方法拖动事件