Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/09/2008, 05:53
logout_fer
 
Fecha de Ingreso: agosto-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Generar automáticamente el valor ID en DetailsView

Hola a todos.

Me encuentro con el siguiente problema. Tengo un DetailsView desde el que doy de alta registros y quiero generar la clave del registro a base de código porque tiene que cumplir ciertas características.

Lo que he hecho hasta ahora es generar un método privado que me crea la cadena correcta y lo inserto en el campo del ID en el DetailsView, pero cuando le doy a insertar en base de datos me dice que el campo está vacío y por ser una clave primaria no puede insertarlo.

Esto es lo que he invocado en todos los eventos que he probado
Código:
    private void generateKey()
    {
        Keymaker keymaker = new Keymaker();
        if (detailsView.CurrentMode == DetailsViewMode.Insert)
        {
            // random Id
            detailsView.Rows[0].Cells[1].Text = keymaker.hazClave();
    }
}
Creo que puede ser porque cuando escribo el ID en el TextBox no le doy tiempo al DetailsView a recoger el dato. El tema está en que he probado a escribir dicho dato en los eventos, load, PreRender, DataBound e Init y siempre obtengo fallos. En ocasiones me dice que el campo está vacío y en otras me dice que cuando lo quiero escribir me encuentro fuera de índice (supongo que porque el DetailsView aún no se ha renderizado).

Sin embargo, si dejo que el TextBox sea editable, y lo lleno a mano todo funciona correctamente. ¿Alguien sabe en qué momento y cómo se puede escribir en un campo del detailsView? Mi idea sería ocultar ese campo y escribirlo automáticamente para que el usuario no sea consciente del uso de claves.

Un saludo y muchas gracias a todos