2013-04-20 68 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); 
    } 

} 

和最佳實踐我在做什麼是調用此方法拖動事件