Hola bitaziko, yo hice algo así pero en C#, te lo paso de todas maneras haber si lo cambias nada mas.
En primer lugar cree una clase y en la clase un metodo llamado actualizarDataGrid,
en el form_load llamo a ese metodo y tambien cada bes que guardo algo en el evento click del boton Guardar, bueno algo asi:
public void actualizarDataGrid(DataGridView dtg, string tabla)
{
da
= new SqlDataAdapter
("SELECT * FROM " + tabla, cadena
); da.Fill(dt);
dtg.DataSource = dt;
}
Como te das cuenta, es una metodo que no vuelve valores; y necesita dos argumentos, un datagridview y un string; el dataGridView es el que vas a actualizar, y el estring es la tabla que quieres que aparezca en ese dataGridView.
Ahora como utilizo, como ya sabes en la cabecera del codigo de tu formulario declaras la clase asi:
namespace programacionI
{
public partial class frmDocente : Form
{
public frmDocente()
{
InitializeComponent();
}
docentes doc
= new docentes
(); private bool numero = false;
Si te das cuenta mi clase se llama docentes y estoy declarando un nuevo objeto "doc" del tipo docentes. Ahora como utilizamos el metodos en el form, asi:
private void frmDocente_Load(object sender, EventArgs e)
{
doc.actualizarDataGrid(dtgDocentes, "docentes");
dtgDocentes.Columns[0].Width = 40;
dtgDocentes.Columns[1].Width = 255;
}
ves que en el formulario frmDocentes ni bien abre me va a mostrar en el dataGridView "dtgDocentes" todos los datos ya guardados en la tabla "docentes" de mi base de datos. Ademas cambio el tamaño de las columnas en tiempo de ejecucion.
Ahora agregas un nuevo registro, tienes tu boton "btnGuardar" y le colocas este codigo:
private void btnGuardar_Click(object sender, EventArgs e)
{
if ((txtID.Text != "") && (txtApellidos.Text != ""))
{
int codigo = Convert.ToInt16(this.txtID.Text);
string apellidos = txtApellidos.Text;
doc.guardarDocente(codigo, apellidos, dtgDocentes);
}
else
{
MessageBox.Show("Uno o mas campos no fueron llenados", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Warning);
}
doc.limpiarTextBox(this);
txtID.Focus();
}
Como ves verifico que los textBox no esten vacios, Luego capturo el codigo y apellido y los llevo a mi metodo "guardarDocente"; ahi es donde utilizo el metodo"actualizarDatGrid", ya que el codigo de "guardarDocente" es este:
public void guardarDocente(int codigo, string nombres, DataGridView dtg)
{
cnx
= new SqlConnection
(cadena
); cmd.Connection = cnx;
cmd.CommandText = "INSERT INTO docentes (iddoc, nomdoc) VALUES (@iddoc, @nomdoc)";
cmd.Parameters.AddWithValue("@iddoc", codigo);
cmd.Parameters.AddWithValue("@nomdoc", nombres);
cnx.Open();
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("Docente ingresado exitosamente");
actualizarDataGrid(dtg, "docentes");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
cnx.Close();
}
Como vez, guardo el codigo y el nombre y apellido del docente, si se guarda bien, llamo al metodo actualizarDataGrid, si no solo sale un mensaje de error. Para que no te compliques (si lo vez complicado) utilizas el metodo actualizarDataGrid aparte en el boton y no en el metodo guardarDocente. No se como poner imagenes de mi Pc, sino te mostraria como hice mi formulario para que te guies.
Espero haberte ayudado, algun dia me dedicare a aprender vb.net