【发布时间】:2010-03-08 19:58:30
【问题描述】:
环境: asp.net 3.5(C#和VB),Ms-sql server 2005 express
表格
表:表用户 ID(主键) 用户名
表:userSchedule ID(主键) thecreator(外键 = tableUser.ID) 其他领域
我创建了一个过程,它接受参数用户名并获取用户 ID 并在 Table:userSchedule 中插入一行
问题: 使用带有 datalist 控件的存储过程,通过使用下面的语句传递当前用户名仅从数据库中获取数据工作正常
protected void SqlDataSourceGetUserID_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
e.Command.Parameters["@CurrentUserName"].Value = Context.User.Identity.Name;
}
但在使用 DetailsView 插入时显示错误
Procedure or function OASNewSchedule has too many arguments specified.
我确实用过
protected void SqlDataSourceCreateNewSchedule_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
e.Command.Parameters["@CreatedBy"].Value = Context.User.Identity.Name;
}
DetailsView 属性: 自动生成字段:关闭, 默认模式:插入, 它显示了过程中可能不需要的所有字段,例如过程中不需要的 ID(主键)和 CreatedBy(用户 ID)字段。
所以我尝试从详细信息视图中删除 2 个字段并显示错误
Cannot insert the value NULL into column 'CreatedBy', table 'D:\OAS\OAS\APP_DATA\ASPNETDB.MDF.dbo.OASTest'; column does not allow nulls. INSERT fails. The statement has been terminated.
由于某些原因,参数值没有被设置。
有人能理解这一点并提供帮助吗?
【问题讨论】:
标签: sql sql-server stored-procedures parameters asp.net-3.5