Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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
Asp.net 从DetailsView ItemUpdate中删除参数_Asp.net_Objectdatasource_Detailsview_Tableadapter - Fatal编程技术网

Asp.net 从DetailsView ItemUpdate中删除参数

Asp.net 从DetailsView ItemUpdate中删除参数,asp.net,objectdatasource,detailsview,tableadapter,Asp.net,Objectdatasource,Detailsview,Tableadapter,这是设置 我有一个DetailsView,它的DataSource是一个ObjectDataSource ObjectDataSource有两个方法,select和update,它们是在TableAdapter中定义的存储过程 Select存储过程接受一个参数——记录id——并返回在DetailsView中填充的字段 Update存储过程接受三个参数——记录id和两个数据字段 选择过程工作正常 但是,当我提交更新时,出现以下错误: ObjectDataSource找不到具有参数:[所有21个

这是设置

  • 我有一个
    DetailsView
    ,它的
    DataSource
    是一个
    ObjectDataSource
  • ObjectDataSource
    有两个方法,select和update,它们是在
    TableAdapter
    中定义的存储过程
  • Select
    存储过程接受一个参数——记录id——并返回在
    DetailsView
    中填充的字段
  • Update
    存储过程接受三个参数——记录id和两个数据字段
选择过程工作正常

但是,当我提交更新时,出现以下错误:

ObjectDataSource
找不到具有参数:[所有21个表列]的非泛型方法
Update

我试图只将(3)个必需字段传递给
Update
存储过程,但是
DetailsView
显然试图使用从
Select
接收到的所有字段进行更新

我知道我可以从
DetailsViewUpdateEventArgs
访问
NewValues
集合,但我看不到删除任何参数以使其与存储过程、
TableAdapter
ObjectDataSource
中的定义匹配的方法


有什么想法吗?

也许可以提供一些见解。只要您在数据源中指定更新方法和更新参数,这应该可以正常工作。

我现在可以解决这个问题,只需从
DetailsViewUpdateEventArgs
中的
NewValues
集合中删除不需要的值即可。但是,这并不是最优的,因为如果存储过程或表单发生更改,我已经添加了另一个失败点


我仍然想知道
TemplateField
是否可以像
BoundField
那样设置为
ReadOnly

好的,我们的方向是正确的。在Aaron链接到的教程中,我发现了以下内容:“确保ObjectDataSource调用[correct]UpdateProduct重载…我们需要将GridView限制为仅包含ProductName和UnitPrice的可编辑字段。这可以通过删除其他BoundFields和CheckBoxFields、将这些其他字段的ReadOnly属性设置为true或通过两者的某种组合来实现。”现在的问题是,我的DetailsView中的所有字段都是TemplateFields,它们没有只读属性。仅删除EditItemTemplate不起作用,在本例中,我无法在DetailsViewMode.Edit期间完全删除字段。因此,虽然我对这个过程有了更深入的了解,但我仍然没有说服.NET使用正确的更新方法。