如何在c#中正确使用DataGridView
本文关键字:DataGridView | 更新日期: 2023-09-27 18:10:11
嗯,这是一个非常非常宽泛的问题。我做了很多研究,但我还是很困惑。
所以,我的问题是,我有一个小c#程序连接到一个SQL数据库。通过c#接口,我可以将数据插入到我的SQL数据库中(我知道这一点,因为我在MySQLWorkbench中检查了它,数据都在那里),但是我想看到它,所以我可以根据需要编辑,更新和删除;为此,我需要使用DataGridView,但那太复杂了,我见过很多信息,这让我更困惑。
我要对我的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);
}
}
}
上面我显示一个"Nombre"{name},但我得到一个"Clave"{Id},在一个组合框;我想对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
兄弟,我建议使用DataTable
代替DataSet
,并在您的UI上拖动DataGridView
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
事件中调用此方法