这是设置
DetailsView
,DataSource
是ObjectDataSource
。 ObjectDataSource
有两个方法,select和update,它们是TableAdapter
中定义的存储过程。 Select
存储过程采用1个参数 - 记录ID - 并返回DetailsView
中填充的字段。 Update
存储过程有三个参数 - 记录ID和两个数据字段。选择过程正常。
但是,当我提交更新时,我收到以下错误:
ObjectDataSource
找不到包含参数的非泛型方法Update
:[所有21个表格列]
我尝试仅将(3)必填字段传递给Update
存储过程,但DetailsView
显然正在尝试使用从Select
收到的所有字段进行更新。
我知道我可以从NewValues
访问DetailsViewUpdateEventArgs
集合,但我看不到删除任何参数的方法,以便它们与定义匹配在存储过程中,TableAdapter
和ObjectDataSource
。
有什么想法吗?
答案 0 :(得分:0)
或许this tutorial可以提供一些见解。只要您在数据源中指定更新方法和更新参数,这应该可以正常工作。
答案 1 :(得分:0)
我现在只需从NewValues
中删除DetailsViewUpdateEventArgs
集合中不需要的值即可解决此问题。但是,这不是最佳选择,因为如果存储过程或表单发生更改,我会添加另一个故障点。
我仍然想知道TemplateField
是否可以设置为ReadOnly
BoundField
的方式(参见Aaron回答下面的评论)。