Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: PETTETE en 5 Febrero 2018, 14:30 pm



Título: Guardar cambios datagridview
Publicado por: PETTETE en 5 Febrero 2018, 14:30 pm
Hola buenas, estoy intentando hacer que la base de datos se actualice al cambiar datos manualmente de un datagridview y al pulsar un botón.

He intentado muchiisimas cosaas que aparecian por internet y mi ultima reserva siempre es este foro.. ajjajaja

El datagrid lo lleno con un TableAdapter. y quiero que cuando modifique el valor de cualquier celda del datagrid y pulse el boton actualizar se guarden los cambios en el DataTable.

Luego tendría que pulsar el botón refrescar para ver los cambios pero eso ya se hacerlo.

Algún consejo para este problemílla?

como ya sabeis, toda ayuda es bien recibída y muy agradecída.


Título: Re: Guardar cambios datagridview
Publicado por: PETTETE en 6 Febrero 2018, 10:52 am
Hola buenas,
he conseguido que se actualice y se guarde el dato pero...(siempre hay un pero.. jajjaja)
El dato se guarda en toda la columna.. estoy pensando en limitar la query pero no se como hacerlo.
con limitar me refiero a que solo se aplique a la celda seleccionada.
 Mi código al respecto es el siguiente:
Código:
 string  VALOR = txtACTUALIZAR.Text;
                object celda = this.dataGridView1.CurrentCell.Value;
               

               celda = txtACTUALIZAR.Text;
               
                 TA.UpdateQuery1(VALOR);
                 dataGridView1.Update();

La query es la siguiente.
Código:
Update RECLAMACIONES.VNC.REEVISIONESVNC SET CODIGO=@VALOR



Título: Re: Guardar cambios datagridview
Publicado por: PETTETE en 7 Febrero 2018, 10:59 am
Hola buenas,
traigo avances pero con un inconveniente.
Código:
hay alguna manera de hacer esto pero mas simplificado? 
[code]DataGridViewRow row = dataGridView1.Rows[0];

                string celda1 = Convert.ToString(row.Cells[1].Value);
                string celda2 = Convert.ToString(row.Cells[2].Value);
                string celda3 = Convert.ToString(row.Cells[3].Value);
                string celda4 = Convert.ToString(row.Cells[4].Value);
                string celda5 = Convert.ToString(row.Cells[5].Value);

                string COD_CONTRATO = txtCONTRATO.Text;
                string  VALOR1 = txtACTUALIZAR.Text;
               
                string  VALOR2;// = textBox1.Text;
                if (textBox1.Text == "")
                    VALOR2 = celda4;
                else
                {
                    VALOR2 = textBox1.Text;
                }
               
             
                  //valor1= nir--valor2=codclient
                    TA.UpdateQuery1(VALOR1, VALOR2, COD_CONTRATO);

Solo me tendría que actualizar la celda del datagrid en la que haga click.
De la manera que hos he facilitado me habce bien pero claro, mi tabla tiene 55 columnas y no quiero poner 55 textbox. mi idea es poner 1 texbox y que ese texbox valga para todas las celdas. Por eso necesito que el textbox se enlace con la celda seleccionada.
y solo con la celda seleccionada.[/code]ç
¿Algún consejillo?


Título: Re: Guardar cambios datagridview
Publicado por: Serapis en 7 Febrero 2018, 20:55 pm
...
hay alguna manera de hacer esto pero mas simplificado?
...
Es que no es muy explicativo el código puesto...
Por ejemplo si solo usas celda4, para que asignar valores desde la 1 a la 5?, ó para qué usar row, si siempre es la columna 0?
Tampoco tiene sentido usar strings, para asignar el contenido de un textbox, si lo que aloja precisamente de interés un textbox es un string...

Usa mejor:

dataGridView1.Rows[0].cell(4).value.ToString

Entonces todo ese código (del m,ensaje previo, estoy con prisas no he leído tod) quedaría tal que así:
Código:
if (TextBox1.Text.Length == 0 )                
     TA.UpdateQuery1( txtACTUALIZAR.Text, dataGridView1.Rows[0].cell(4).value.ToString,  txtCONTRATO.Text);
else   {
      TA.UpdateQuery1( txtACTUALIZAR.Text, textBox1.Tex,  txtCONTRATO.Text);                   
         }


Solo me tendría que actualizar la celda del datagrid en la que haga click.
De la manera que hos he facilitado me habce bien pero claro, mi tabla tiene 55 columnas y no quiero poner 55 textbox. mi idea es poner 1 texbox y que ese texbox valga para todas las celdas. Por eso necesito que el textbox se enlace con la celda seleccionada.
y solo con la celda seleccionada.
¿Algún consejillo?
El datagridview, tiene varios eventos... CellMouseClick, CellContentClick, etc... usa el que más te convenga.
Por ejemplo (ahora tengo delante el vb2010),

Código
  1. Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
  2.       messagebox.show( e.ToString()) //incluso el tostring se puede omitir, dado que la celda es de tipo string (si el ColumnType está declarado de tipo string)...
  3.    End Sub
  4.