C# 使用FormView插入

C# 使用FormView插入,c#,asp.net,.net,formview,C#,Asp.net,.net,Formview,我正在尝试使用基本FormView控件插入项 我对C#及其控件有些陌生,所以请容忍我。 FormView具有以下标准条目: ItemName ItemPrice ItemSize 它还具有对用户隐藏的控件,例如: ItemDateCreated ItemDatechanged ItemChangedBy 在执行Insert()之前,我试图修改这些项目的值,因此我捕获了事件INSERTBUTON\u Click(): 它一直告诉我ItemName字段为NULL,并抛出一个错误,即使我可以清楚地

我正在尝试使用基本FormView控件插入项

我对C#及其控件有些陌生,所以请容忍我。 FormView具有以下标准条目:

ItemName
ItemPrice
ItemSize
它还具有对用户隐藏的控件,例如:

ItemDateCreated
ItemDatechanged
ItemChangedBy
在执行Insert()之前,我试图修改这些项目的值,因此我捕获了事件INSERTBUTON\u Click():


它一直告诉我ItemName字段为NULL,并抛出一个错误,即使我可以清楚地看到该值正在文本框中设置。为什么这个值被抛出为NULL?在调用INSERT()之前,是否需要手动创建INSERT语句?我该怎么做呢?

如果没有看到您的.aspx代码,很难确定,但是您提供的代码示例中没有包含ItemName。听起来您的数据绑定语法可能不正确,因此页面上文本框中的值没有正确映射到Insert命令中的参数

此外,您可能不想使用隐藏的文本框控件,而是将其绑定到数据源上的
插入事件中。本例假设您使用的是SqlDataSource控件,因此请根据您的特定数据源进行更改:

private void On_Inserting(Object sender, SqlDataSourceCommandEventArgs e)
{
    e.Command.Parameters.Add(new SqlParameter("ItemDateAddedTextBox", DateTime.Now.ToString("MMMM dd, yyyy")));
    ...
}

在.aspx页面的数据源定义中附加此处理程序。在网页的“设计”视图中,单击数据源,然后在“属性”窗口中,单击“事件”选项卡。如果双击插入事件,它将在codebehind中为您创建处理程序,您只需填写您的实现。

如果字段值是从系统设置的,那么我建议直接在Sql中执行,而不是通过asp.net代码

e、 g:


谢谢,这很有效。从我的FormView中的插入模板中删除了日期的文本框,它成功了!我已将getdate()设置为SQL Server中的默认值,但它仍然抛出空错误。我猜我的代码试图在那里抛出NULL。但我明白了,谢谢!
private void On_Inserting(Object sender, SqlDataSourceCommandEventArgs e)
{
    e.Command.Parameters.Add(new SqlParameter("ItemDateAddedTextBox", DateTime.Now.ToString("MMMM dd, yyyy")));
    ...
}
insert into mytable (...,..., ItemDateCreated) values (...,...,getdate())