Hola Hackeros.net
esta vez traigo un problemilla que creo es facil resolver pero me he dado cuenta que soy muy bruto y no termino de conseguirlo,
vereis estoy creando una aplicacion para registrar clientes en una base de datos en sqlserver mediante visual studio 2010. todo marcha bien el unico inconveniente es el siguiente
atravez de un form hago los registro en la base de datos, y tengo un mdiparent que en el evento load me carga en un datagridview todos los registros de la BD bien, pues lo que intento conseguir es que una vez que yo presione el boton "guardar" en el formulario se me actualize el datagridview que esta en el mdiparent y me visualize el registro que acabo de guardar.
espero haberme xplicado bien y que me podais ayudar.
gracias de antemano!!!
un saludo!! foreros
y FELIZ NAVIDAD!!!!!! ;-) ;-) ;-)
Con visualizar quieres decir que se refresque el DataGridView como tal, o que se posicione en el registro ingresado?
Debes de actualizar el datasource y disparar el bind
Saludos
Cita de: Shell Root en 23 Diciembre 2011, 12:40 PM
Con visualizar quieres decir que se refresque el DataGridView como tal, o que se posicione en el registro ingresado?
si que se refresque el DataGridView como tal y me muestre el registro que recientemente ingrese.
Cita de: Novlucker en 23 Diciembre 2011, 12:43 PM
Debes de actualizar el datasource y disparar el bind
Saludos
ok si me pudieras explicar bien el codigo x que no tengo ni idea
he pensado en lo siguiente aunq aun no lo he probado:
como tengo el datagridview en un mdiparent he pensado en esto
Private Sub ClientesBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClientesBindingNavigatorSaveItem.Click
Me.Validate()
Me.ClientesBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.BasedeDatosDataSet)
MDIParent1.Refresh()
End Sub
o bien asi:
Private Sub ClientesBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClientesBindingNavigatorSaveItem.Click
Me.Validate()
Me.ClientesBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.BasedeDatosDataSet)
MDIParent1.ClientesDataGridView.Refresh()
End Sub
pero lo dicho no lo he probado aun, he leido lo del bind pero no se exactamente como dispararlo,con respecto al datasoucer al decir actualizar seria "refresh" o "update" por que no lo entiendo dl todo esas acciones...
¿Como estas asignando el datasource al control? Eso lo tienes que repetir.
Saludos
he probado lo siguiente y en cierto modo me ha funcionado vereis:
Private Sub Form2_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArg... Handles MyBase.FormClosing
MDIParent1.midatagrid.datasource = nombredeldatasource
MDIParent1.midatagrid.refresh ()
end sub
bien esto en el formclosing aparentemente funciona
pero cuando agrego el codigo al boton guardar en el formulario lo que hace es que me refresca todo el datagrid poniendolo en blanco....
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);
dt = new DataTable();
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 = new SqlCommand();
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