Pregunta

Estoy usando un FormView con un ObjectDataSource y vinculante mediante <% # bind ( "WhateverProp")%> - y todos mis columnas anulables están regresando con valores por defecto del tipo en ellos.

Parece que el objeto FormView no tiene una propiedad ConvertEmtpyStringToNull al igual que los otros recipientes de unión hacen. He encontrado artículos que sugieren que esto fue un error en VS 2005 / .Net 2.0 -., Pero aún no hay diciendo lo que fue la resolución

¿Alguien tiene alguna sugerencia en cuanto a cómo puedo solucionar esto sin acaba de volver a capturar todos los campos en caso ODS_Inserting? Yo preferiría no tener que escribir código para volver a enlazar todos mis campos enlazados en el formulario sólo para probar valores nulos.

¿Fue útil?

Solución

luchado con él también. Para una lista desplegable, yo que:

AppendDataBoundItems="true"


<asp:ListItem Text="" Value=""></asp:ListItem>

Para mi ObjectDataSource, incluso thoug mi UpdateMethod toma un único parámetro, la entidad, agrego actualización parametros para cada campo anulable de la Entidad con convert a NULL

<UpdateParameters>
    <asp:Parameter Name="No_Empl_Ferme" Type="Int32" ConvertEmptyStringToNull="true" />
</UpdateParameters>

Yo hago lo mismo para la inserción.

funciona bien.

Otros consejos

terminé haciendo esto - una especie de acercamiento de la escopeta, pero en este caso todos de mis valores de cadena vacíos deben ser nulos. También he considerado el uso de una matriz de cadenas en el código para especificar qué valores deben ser anuladas -. Y luego sólo pudiera bucle a través de la matriz de cadenas en lugar de sobre la totalidad de los valores

protected void RequestItemFormView_ItemInserting(object sender, FormViewInsertEventArgs e)
{
    for (int i = 0; i < e.Values.Count - 1; i++)
    {
        if (e.Values[i].ToString() == string.Empty)
        {
            e.Values[i] = null;
        }
    }
}

En el origen de datos de objetos, es necesario agregar InsertParameters para cada uno de su tipo anulable con el atributo ConvertEmtpyStringToNull = "true":

<InsertParameters>
   <asp:Parameter Name="NullableFieldName" Type="Int32" ConvertEmptyStringToNull="true"  />            
</InsertParameters>

Cita: Tonio - No estoy usando parametros individuales, pero DataObjectTypeName lugar. Mi método de inserción toma un solo parámetro, y que es el objeto de negocio que quiero haber salvado de nuevo a la base de datos. - de Scott Ivey 1 de mayo en 12:57

lo he arreglado así:

 protected void FormViewSettings_ItemUpdating(object sender, FormViewUpdateEventArgs e)
  {
     OrderedDictionary values = e.NewValues as OrderedDictionary;

     var personID = values["PersonID"];

     if (string.IsNullOrEmpty(personID.ToString()))
     {
        values.Remove("PersonID");
        values.Add("PersonID", null);
     }
  }

Es un pequeño truco, pero funciona bien. De esta manera se puede establecer la propiedad del objeto a null en lugar de String.Empty sin utilizar la configuración ConvertEmptyStringToNull.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top