.net - programacion - iniciar sesion mvc
Establecer el valor predeterminado de RadDatePicker en NULL cuando la fecha no está configurada (3)
No siempre es posible cambiar el tipo de datos de DateTime a DateTime? como un objeto DateTime podría de hecho ser requerido. (Un escenario típico es cuando su control está vinculado a un objeto de base de datos con un tipo DateTime, pero está ocupado creando un nuevo registro en su control y, por lo tanto, el valor sigue siendo nulo en ese punto). En tal caso, es posible escriba un Value Converter como lo hace Paulo en el siguiente enlace: http://www.telerik.com/forums/default-date-value-01-01-001 (Vea su código para EditDateConverter. Funciona tal como está. ..) Estoy pegando su código aquí como referencia y en caso de que ese enlace deje de funcionar en el futuro:
public class EditDateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null && value.GetType().FullName == "System.DateTime")
{
var dt2 = (DateTime)value;
if (dt2 != DateTime.MinValue)
return value;
}
DateTime dt;
if (!DateTime.TryParse(value as string, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out dt))
return dt != DateTime.MinValue ? value : null;
return dt;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null && targetType.FullName == "System.DateTime")
return DateTime.MinValue;
return value;
}
}
Para usarlo en un enlace para su RadDatePicker, simplemente agregue el convertidor como un recurso en su XAML y luego agregue el convertidor a su enlace.
En sus declaraciones de espacios de nombres XAML, debe agregar el espacio de nombres de su convertidor, por ejemplo:
xmlns:converters="clr-namespace:MyNamespace.Converters"
Y luego, en la sección de Recursos de su XAML, tendría:
<UserControl.Resources>
<converters:EditDateConverter x:Name="NullableDate"/>
</UserControl.Resources>
Luego, simplemente puede agregar la siguiente línea a su enlace en el control:
Converter={StaticResource NullableDate}
Si ahora tiene una fecha nula, el control mostrará la marca de agua (por ejemplo, "Ingresar fecha") en lugar de 01/01/0001.
Estoy vinculando el RadDatePicker a una propiedad viewModel dateTime. cuando la propiedad es nula en la base de datos, recibo 01/01/0001. Cómo puedo cambiar este comportamiento para dejar el campo de fecha en blanco .. ejemplo:
En la base de datos ===> experiation_date: NULL In View (GUI) ===> experation_date: 01/01/0001
Resultado esperado ===> experation_date: {Blank}
Establezca SelectedDate en null (y no DBNull):
RadDatePicker1.SelectedDate = null;
y en xaml establezca DateTimeWatermarkContent en la cadena vacía:
<telerik:RadDatePicker x:Name="RadDatePicker1" DateTimeWatermarkContent="" />
Si eres bind no anulable datetime variable ie (DateTime) para controlar, usará la fecha 01/01/001 predeterminada en lugar de Empty ... Entonces, si quieres el valor predeterminado como Empty, simplemente cambia el tipo de datos de tu variable que está obligado a controlar a (DateTime?) .....
DateTime ===> DateTime?
Funciona bien...
Gracias.!!!