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:
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). private void generateKey()
{
Keymaker keymaker = new Keymaker();
if (detailsView.CurrentMode == DetailsViewMode.Insert)
{
// random Id
detailsView.Rows[0].Cells[1].Text = keymaker.hazClave();
}
}
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

