Foros del Web » Programación para mayores de 30 ;) » .NET »

GridView no guarda si oculto columnas

Estas en el tema de GridView no guarda si oculto columnas en el foro de .NET en Foros del Web. Buenas tardes, Tengo un GridView (webform) con las columnas id, etapa, departamento, carga. Son boundfields. El datasource las obtiene directamente de la tabla de la ...
  #1 (permalink)  
Antiguo 10/03/2009, 10:43
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 2 meses
Puntos: 0
GridView no guarda si oculto columnas

Buenas tardes,

Tengo un GridView (webform) con las columnas id, etapa, departamento, carga. Son boundfields. El datasource las obtiene directamente de la tabla de la base de datos.

Lo tengo configurado para permitir edición, con las columnas id y etapa ocultas (son claves y no interesa que lo vea el usuario), éstas nunca cambiarán en la edición de una fila.

Pero cuando edito uno de los otros dos campos, y le doy a actualizar, me mantiene el antiguo valor...

A que es debido? Es estrictamente necesario que sean mostradas?

Gracias.
  #2 (permalink)  
Antiguo 10/03/2009, 13:03
 
Fecha de Ingreso: mayo-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 0
Respuesta: GridView no guarda si oculto columnas

Hola salud2 soy pesimo escribiendo y mas explicando pero espero poder ayudarte los campos al ocultarlos en el gridview al momento de estar trabajando en realidad no existe lo que ocupas es esto yo lo que hago oculto todos los controles que no van los que si los dejo logico verdad bueno la primera columna la dejo como template en las propiedades de las columas convertir esta columna en template y le agrego ojo en tu caso 2 labels con su propiedad bound con el valor que te enlasa por ejemplo "id_usuario" y "llavecompuesta" algo asi despues de esto cuando vas a editar o hacer cualquier cosa ocupas hacer

((label)gridview.rows["posicion puede ser que se la asignes o la de el armgumento 'e'"].colums[0].controls.findcontrol("id_usuario")).text;

con eso sale si explicas mas que estas haciendo te puedo mandar un ejemplo mas aplicado a lo tuyo saludos
  #3 (permalink)  
Antiguo 10/03/2009, 23:20
Avatar de jlbautista  
Fecha de Ingreso: enero-2007
Ubicación: Durango, Méx.
Mensajes: 175
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: GridView no guarda si oculto columnas

El DataGridView trabaja un poco diferente en cuanto al manejo de los enlaces a datos de lo q fue el antecesor DataGrid.
En tu caso, el problema va un poco más del modo en como enlazas el DataSource con tu control. Existe una propiedad DataKeys q guarda las "llaves" o valores principales desde el DataSource en el GridView. Esa propiedad omite el hecho de declarar columnas ocultas como antes se hacia, y a partir de esos valores q declaras, podrás usarlos en otros métodos como edición, modificación y eliminación.
Si gustas te paso mañana un enlace donde puedas consultar un poco más sobre esa funcionalidad, pq ando en casa y ya es noche :P

Saludos y espero q al menos te orientes un poco...
  #4 (permalink)  
Antiguo 11/03/2009, 04:31
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: GridView no guarda si oculto columnas

Hola jlbautista,

He añadido id y etapa como datakeys del gridview, pero aún así sigue sin guardarme el registro actualizado si no muestro la columna etapa.

Si muestro la columna etapa sí lo guarda, pero de lo contrario no. Este campo es un parámetro en el Update del DataSource.

Probaría a dejar de poner en el datasource el campo etapa, pues para mostrar y actualizar es un registro que no cambia nunca, pero a la hora de añadir nuevos registros sí que es necesario insertarlo.

Una opción es crear otro datasource donde sí se contemple la selección de dicho campo y como agrego registros de forma externa al gridview. Pero si puedo evitar esta segunda opción lo prefiero, pues me ahorro usar otro aparte.

Espero me puedas echar una mano para acabar de cerrar el problema.

Un saludo.
Gracias.
  #5 (permalink)  
Antiguo 11/03/2009, 06:50
Avatar de shumito  
Fecha de Ingreso: mayo-2006
Mensajes: 248
Antigüedad: 18 años
Puntos: 0
Respuesta: GridView no guarda si oculto columnas

Tu solucion es utilizar datakeys..
  #6 (permalink)  
Antiguo 11/03/2009, 10:22
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: GridView no guarda si oculto columnas

Como he dicho en el anterior post, tengo los datakeys id y etapa.

Y aún así, da error en el Update, porque le falta el parámetro @etapa.

Saludos.
  #7 (permalink)  
Antiguo 11/03/2009, 10:27
Avatar de jlbautista  
Fecha de Ingreso: enero-2007
Ubicación: Durango, Méx.
Mensajes: 175
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: GridView no guarda si oculto columnas

Una pregunta... ese Key 'etapa' como lo generas? o le das opción al usuario final de modificarlo???
  #8 (permalink)  
Antiguo 13/03/2009, 08:58
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: GridView no guarda si oculto columnas

No se la doy.

Me explico. Tengo una tabla con los campos: ID, etapa, carga, departamento.

Donde etapa y departamento son claves foráneas que apuntan a otras tablas.

Tengo un Datasource cuyo SelectCommand sobre esta tabla:

SelectCommand="SELECT [id], [departamento], [etapa], [carga] FROM [CargasEtapaDept] WHERE ([etapa] = @etapa) ORDER BY [carga] DESC"

el parámetro etapa lo obtiene de un formview que tiene también la página, solo puede tener un valor a la vez.

El UpdateCommand es el siguiente:
UpdateCommand="UPDATE [CargasEtapaDept] SET [departamento] = @departamento, [etapa] = @etapa, [carga] = @carga WHERE [id] = @original_id AND [departamento] = @original_departamento AND [etapa] = @original_etapa AND [carga] = @original_carga"

Para acabar, y perdona si te sobra información...

Los datakeys id y etapa se los he asignado al gridview en vista diseño. En la propiedad datakeynames del gridview.

Las columns del gridview carga y departamento los he definido como templateFields, no se si tendrá nada que ver... Pero no debería, pues la columna etapa que es donde da conflicto en ninguna de las pruebas que he realizado ha estado como templatefield. Y aún estando las otras como templatefields, cuando se muestra la columna etapa, sí puedo actualizar.

Ya no se que probar...
Gracias.
  #9 (permalink)  
Antiguo 13/03/2009, 13:32
Avatar de jlbautista  
Fecha de Ingreso: enero-2007
Ubicación: Durango, Méx.
Mensajes: 175
Antigüedad: 17 años, 3 meses
Puntos: 1
Respuesta: GridView no guarda si oculto columnas

Ok ok... i got it...
Veamos si este enlace te sirve para darte una idea más clara de lo q tendrías q hacer:
CODE PROJECT: DataKeyNames

y este otro q parece q resuelve el mismo problema q tienes...
2 DataKeyNames

Sino, por aqui seguimos dando lata para poder ayudarte ;)
Sigo buscando para darte más apoyo :)

Última edición por jlbautista; 13/03/2009 a las 13:48 Razón: agregar enlace
  #10 (permalink)  
Antiguo 19/03/2009, 09:26
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: GridView no guarda si oculto columnas

Hola de nuevo,

Contesto por si le sirve de ayuda a alguien.

Finalmente, y tras probar lo de los enlaces que me pasaste jlbautista (mil gracias), no me salía con la mía...

Incomprensiblemente seguía sin guardarme!! Estando como datakey inclusive.

Decidí borrar manualmente del UpdateCommand del DataSource los parámetros que hacían referencia a @etapa, ya que, para insertar lo hago con un textbox y un dropdown externos al gridview. Y a la hora de modificar no ha de cambiar la etapa (de ahí que lo quisiera esconder).

En fin, gracias a todos por vuestra ayuda y espero que la respuesta ayude a alguien en un futuro.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:16.