Tenemos una columna vinculada a un valor entero sql que puede contener nulos. Cuando el usuario intenta "borrar" la celda en el DataGrid
, obtenemos el error de validación¿Cómo se borra una celda (para que tenga valor NULL) en (WPF) DataGrid?
"... no se pudo convertir".
¿Cómo puedo hacer que quede vacío y vincular un valor "nulo" a la columna subyacente?
He buscado este problema en Google durante 2 días y he encontrado algo. Traté de editar mi comentario HCL, pero nunca se guardará.
Estoy familiarizado con IValueConverters
. Escribí uno para manejar nuestros porcentajes (por lo que el usuario puede ingresar "50%" y se convierte a ".5"). Estoy tratando de hacer algo muy similar, pero cuando el valor vuelve como Null
(escribí un dummy IValueConterter
para depurarlo), solo quiero que se guarde en la base de datos como Null
. Tal vez solo necesito configurarlo en DBNullValue
? Parece mucho trabajo para algo que creo que podría tener una propiedad incorporada. He intentado utilizar la propiedad TargetNullValue
en la columna (DataGridBoundColumn
) y establecer que a DBNull.Value
, pero no cambiar el valor (en base a mi maniquí IValueConverter
todavía está entrando como regular (cadena) NULL
.
I simplemente quiere ser capaz de guardar un valor nulo a la base de datos para esta columna (tipo entero).
** ** Última actualización
Buen punto HCL, se me olvida que todo el mundo no se ADO veces
Estoy vinculado a una tabla SQL. La columna en cuestión es int
que permite NULL
s.
Las columnas se crean usando AutoGeneratingColumn
, por lo que básicamente las conecta "automágicamente" (se aplican ciertos estilos como Right Justify en este método, pero no para esta columna). Toma este enfoque, porque la aplicación es prácticamente un reemplazo de "Acceso". Nuestro CIO ordenó que elimináramos Access de los usuarios, por lo que esta fue la solución (crear nuestro propio MS Access). De todos modos, dado que puede abrir cualquier tabla (y crear tablas, columnas, etc.) simplemente "Autogenera" las columnas según la tabla que se abrió. Aunque, dado que hay ciertas columnas que la aplicación conoce inherentemente, como Discount_Pct, cuando encuentra una de esas columnas, sí hace algunas "cosas especiales" (como asignar el IValueConverter
que describí anteriormente). Aunque, como dije ... para esta columna en particular, no se le hace nada "especial". Es solo un entero de SQL regular (nulable) que es "Autogenerado".
¿Podemos ver el código de validación? – SQLMason
No hay ninguno. Es una bonita rejilla vainilla. – Shayne