Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 显示日期字段为空的列表视图_C#_Wpf_Visual Studio 2010_Listview - Fatal编程技术网

C# 显示日期字段为空的列表视图

C# 显示日期字段为空的列表视图,c#,wpf,visual-studio-2010,listview,C#,Wpf,Visual Studio 2010,Listview,您好,我有一个带有几个字段的列表视图,其中一个是名为DatumNabavke的日期字段 public DateTime? DatumNabavke { get { return _datumNabavke; } set { _datumNabavke = value; OnPropertyChanged("DatumNabavke"); } } 如您所见,它是一个可为空的日期字段。问题是,虽然它可以为Null,但当它为Null时,它会自动使用D

您好,我有一个带有几个字段的列表视图,其中一个是名为DatumNabavke的日期字段

public DateTime? DatumNabavke
    {
        get { return _datumNabavke; }
        set { _datumNabavke = value; OnPropertyChanged("DatumNabavke"); }

    }
如您所见,它是一个可为空的日期字段。问题是,虽然它可以为Null,但当它为Null时,它会自动使用DateTimeNow保存

if (adress.DatumNabavke == null)
                {
                    oleComd.Parameters[":datumnabavke"].Value = DateTime.Now;
                }
因此,当我创建一个新行并将DatumNabavke字段留空时,它应该在GridView的ListView中显示为今天的日期

<GridViewColumn   Header="Datum Nabavke" DisplayMemberBinding="{Binding DatumNabavke, StringFormat= d}" />

但出于某种原因,这并没有发生。我显示的其他每一行,名称、id、值,都按预期显示,但由于某些原因,日期只是空的

另一件事,在调试输出中,我得到以下错误:

System.Windows.Data错误:11:回退值“x:Static sys:DateTime.Now”(类型“String”)无法转换为在“SelectedDate”(类型“Nullable
1”)中使用。BindingExpression:Path=address.DatumZaduzenja;DataItem=null;目标元素是“DatePicker”(Name='datumZaduzenja');目标属性为“SelectedDate”(类型为“Nullable
1”)FormatException:“System.FormatException:x:Static sys:DateTime.Now不是DateTime的有效值。-->System.FormatException:字符串未被识别为有效的日期时间。有一个从索引0开始的未知单词。 位于System.DateTimeParse.Parse(字符串s、DateTimeFormatInfo dtfi、DateTimeStyles样式) 位于System.ComponentModel.DateTimeConverter.ConvertFrom(ITypeDescriptorContext上下文、CultureInfo区域性、对象值) ---内部异常堆栈跟踪的结束--- 位于System.ComponentModel.DateTimeConverter.ConvertFrom(ITypeDescriptorContext上下文、CultureInfo区域性、对象值) 位于System.ComponentModel.NullableConverter.ConvertFrom(ITypeDescriptorContext上下文、CultureInfo区域性、对象值) 位于System.Windows.Data.BindingExpressionBase.ConvertValue(对象值、DependencyProperty dp、异常和e)'


如果你们能帮忙,我将不胜感激。

您是否尝试过用其他属性指定格式,例如

<GridViewColumn Header="Datum Nabavke" DisplayMemberBinding="{Binding DatumNabavke}" StringFormat="{}{0:dd/MM/yyyy}" />

我假设DatumNabavke是ViewModel中的一个属性,并且该ViewModel的一个集合已成功绑定到ListView.ItemsSource。 您是否尝试过:

public DateTime? DatumNabavke
{
    get { 
        if( _datumNabavke == null)
             return DateTime.Now;

        return _datumNabavke; 
    }
    set { _datumNabavke = value; OnPropertyChanged("DatumNabavke"); }

}
您没有指定调用代码段的位置

if(address.DatumNabavke==null) { 参数[“:datumnabavke”].Value=DateTime.Now; }

如果在ViewModel集合作为ItemSource加载后发生这种情况,则绑定将永远无法工作,因为这段代码不会引发属性通知。 您也可以尝试以下方法:

if (adress.DatumNabavke == null)
{
    oleComd.Parameters[":datumnabavke"].Value = DateTime.Now;
    OnPropertyChanged("DatumNabavke");
}