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