C sharp - refresco de registros en datagrid

 
Vista:
sin imagen de perfil

refresco de registros en datagrid

Publicado por eduardo (22 intervenciones) el 01/05/2014 02:34:07
Tengo la siguiente situación :
Tengo un tabpage de 2 pages . en al primera tengo una grilla en la cual muestro choferes ( código, apel ,nom )
En el segundo page muestro en tres textbox el detalle del registro donde estoy aprado
En el page tengo un botón de alta de registro en el cual se ejecuta este método:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
public void insertarRegistroDeChoferes(){
            string lcCod = txtcod.Text;
            string lcNombre = txtnom.Text;
            string lcApel = txtApel.Text;
            OleDbConnection ConexionConBd = GenerarConexion();
            String lcSentenciaInsertar = "Insert into choferes( codemp, apel , nom ) VALUES('" + lcCod + "','" + lcApel + "','" + lcNombre + "')";
            OleDbCommand comandoInsertar = new OleDbCommand(lcSentenciaInsertar, ConexionConBd);
            OleDbDataAdapter Insertar = new OleDbDataAdapter();
            ConexionConBd.Open();
            Insertar.InsertCommand = comandoInsertar;
            Insertar.InsertCommand.ExecuteNonQuery();
            ConexionConBd.Close();
 
                                                }
Los textbox están enlazados a la grilla por este método :
public void EnlazarControles( DataTable toDataTable, DataSet toDataSet )
        {
 
            toDataTable = toDataSet.Tables[0];
            dataGridTabla.DataSource = toDataTable;  // enlaza los controles textbox con la grilla 
            txtApel.DataBindings.Add("Text", toDataTable, "apel");
            txtnom.DataBindings.Add("Text", toDataTable, "nom");
            txtcod.DataBindings.Add("Text", toDataTable, "codemp");
 
        }
Ene l segundo page tengo un botón de grabación el cual valida
Que el apellido no este vacio :
La función que valida es esta :
   public Boolean validarIngresoDeDatos()
        {
            if (String.IsNullOrEmpty(txtApel.Text))
            {
                // chequea si la caja de texto esta vacia 
 
                return false;
            }
                else {
                return true;
                     }
 
         }
 
El click del botón grabar tiene este código :
 
private void button3_Click(object sender, EventArgs e)
        {
 
            if (validarIngresoDeDatos())
 
            {
                if (lblcontrol.Text == "edicion")
                    ActualizarDatosDeChoferes();
 
                if (lblcontrol.Text == "alta")
                    insertarRegistroDeChoferes();
 
                tabControl1.SelectedIndex = 0;
            }
            else
            {
                MessageBox.Show("Falta el apellido");
                txtApel.Focus();
            }
 
            }

O sea , si la validación esta ok , grabo el reg . el tema es que si la validación no da ok ( o sea el apellido esta vacio , cuando vvuelvo a la grilla del page1 , veo que me agrego el registro incompleto en la grilla . tengo que cerrar el formulario y volver a entar para que desaparezca el reg incompleto de la grilla . probe de hacer un refresh de la grilla , pero no desaparece de la grilla el registro ( mas alla que es claro que no se graba en la base de datos )
Gracias al que lea mi ocnsulta
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

refresco de registros en datagrid

Publicado por Pico (114 intervenciones) el 01/05/2014 19:02:25
Pues yo diría que sí se graba en la bd (Insertar.InsertCommand.ExecuteNonQuery();)

Otra cosa es que hagas sin darte cuenta al cerrar el form un rollback a la bd, que es como se llama lo que quieres hacer.

Y si no se graba lo que tienes que hacer es un CancelEdit() al bindingsource y un RefreshEdit() al grid.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

refresco de registros en datagrid

Publicado por eduardo (22 intervenciones) el 01/05/2014 22:18:32
desde ya gracias por la ayuda.

probe directamente de poner un boton y dentro del click del mismo poner

datagrid.canceledit()
y luego datagrid.refreshedit()
pero no hay caso , hasta que no salgo del form y vuelvo a entrar , el registro no desaparece

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

refresco de registros en datagrid

Publicado por Pico (114 intervenciones) el 01/05/2014 22:35:33
El CancelEdit es al BindingSource.

BindingSource.CancelEdit()
DataGrid.RefreshEdit()
DataGrind.Invalidate()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

refresco de registros en datagrid

Publicado por eduardo (22 intervenciones) el 09/05/2014 02:37:44
gracias por la rta :


en este caso , en el codigo que puse en la consulta , que seria el bindingsource ? , pense qeu podia ser el DataBindings de cada text pero pongo DataBindings. y no tiene la opcion de cancel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar