Zac*_*ber 2 c# wpf xaml entity-framework datagridview
我对 WPF 和 XAML 非常陌生,所以我可能会以错误的方式处理这个问题。
我有一个使用实体框架绑定到数据源的 DataGrid。
当我向 DataGrid 添加新行时,我希望名为“Created”的列之一自动填充当前日期和时间。
数据最终存储在 SQL Server 上。
SQL Server 上的“Created”列不可为空,但具有默认值“getdate()”。它与我们当前的 MS Access 应用程序配合得很好。运行手动插入查询时,只需省略“已创建”列的值即可触发默认值。
新行使用默认值“1/1/0001 12:00:00 AM”而不是当前日期和时间,尽管 SQL Server 的默认值为“getdate()”。
我试过了:
我不知道该怎么做。我知道“视图”只应该负责呈现数据,但我不确定如何更改模型,以便该特定表的新行不发送“已创建”列的值或者在添加新行时始终传递当前日期和时间。
我花了几个小时查看 WPF 文档、实体框架文档、Stack Overflow、MSDN 文档...我快要抓狂了!任何帮助将不胜感激!
我很确定 DataGrid.AddingNewItem 事件就是您想要的事件。尝试这样的事情:
<DataGrid ItemsSource="{Binding Collection}"
CanUserAddRows="True"
AddingNewItem="DataGrid_AddingNewItem">
Run Code Online (Sandbox Code Playgroud)
然后在你的代码隐藏中:
private void DataGrid_AddingNewItem(object sender, AddingNewItemEventArgs e)
{
e.NewItem = new Model
{
Created = DateTime.Now //whatever you put here will be the default value
};
}
Run Code Online (Sandbox Code Playgroud)