博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ObjectDataSource控件执行Delete操作时,出现“未能找到带参数的非泛型方法”的解决方案...
阅读量:4647 次
发布时间:2019-06-09

本文共 1634 字,大约阅读时间需要 5 分钟。

错误提示如下图所示:



2、错误分析:


查阅了一下VS Studio 帮助文档,找到了下面这段话:


参数合并
参数从三个来源添加到 DeleteParameters 集合中:

从 数据绑定控件(在运行时)
从 DeleteParameters 元素(以声明方式)。

从 Deleting 方法(以声明方式)。

首先,将通过数据绑定控件生成的所有参数添加到 DeleteParameters 集合中。例如,如果 ObjectDataSource 控件绑定到具有列 Name 和 Number 的 GridView 控件,则将 Name 和 Number 的参数添加到集合中。参数的确切名称取决于 OldValuesParameterFormatString 属性。这些参数的数据类型是 string。然后,添加 DeleteParameters 元素中列出的参数。如果 DeleteParameters 元素中的参数与 DeleteParameters 集合中的现有参数同名,则修改现有参数以与 DeleteParameters 元素中指定的参数匹配。这通常用于修改参数中的数据类型。最后,可以在 Deleting 事件中以编程方式添加和移除参数,该事件在 Delete 方法运行前发生。合并参数后解析方法。下一节讨论方法解析。

方法解析
调用 Delete 方法时,数据绑定控件中的数据字段、DeleteParameters 元素中以声明方式创建的参数和 Deleting 事件处理程序中添加的参数全部合并在一起。(有关更多信息,请参见上一节。)然后,ObjectDataSource 对象尝试查找可以调用的方法。首先,它查找具有 DeleteMethod 属性中指定的名称的一个或多个方法。如果没有找到匹配项,则引发 InvalidOperationException 异常。如果找到了匹配项,它随后将查找匹配的参数名。例如,假设 TypeName 属性指定的类型有两个名为 DeleteARecord 的方法。一个 DeleteARecord 带一个参数 ID,另一个 DeleteARecord 带两个参数 Name 和 Number。如果 DeleteParameters 集合只包含一个名为 ID 的参数,则调用仅带 ID 参数的 DeleteARecord 方法。解析方法时不检查参数类型。参数的顺序无关紧要。

结合这段话,我们来分析上面的代码:
在执行Delete操作时,DeleteParameters集合中有两个参数:ID,来自于数据绑定;topicID,来自于DeleteParameters中的声明。因为这两个参数名不同,所以无法完成“修改现有参数以与DeleteParameters元素中指定的参数匹配”的工作。因此,就会出现上述的错误。

3、解决办法:
第一种办法:修改Topic类中的DeleteTopic(int topicID),将参数topicID修改为id(不用区分大小写)。然后将DeleteParameters的参数名也改为id
第二种方法:在gvwTopics的RowDeleting事件处理函数中,对DeleteParameters中的参数进行修改,代码如下:


1 protected void gvwTopics_RowDeleting(object sender, GridViewDeleteEventArgs e)
2     {

3         int id = (int)e.Keys["ID"];
4         e.Keys.Clear();              //clear all params
5         e.Keys.Add("topicID", id);   //add new param,
6     }

这样就很好的解决了!

 

转载于:https://www.cnblogs.com/chen110xi/archive/2012/04/03/2430833.html

你可能感兴趣的文章
Sphinx 匹配模式
查看>>
React父组件调用子组件的方法
查看>>
利用EEPROM实现arduino的断电存储
查看>>
micropython TPYBoard v201 简易的web服务器的实现过程
查看>>
前端代码异常日志收集与监控
查看>>
BZOJ.4566.[HAOI2016]找相同字符(后缀自动机)
查看>>
STL源码剖析(set/map)
查看>>
隐式意图&显示意图
查看>>
css 3D堆叠图片卡
查看>>
hdu 4068 福州赛区网络赛H 排列 ***
查看>>
spring mvc中的@PathVariable
查看>>
cocos2dx3.0 removeFromParent和removeAllChildren含义
查看>>
CentOS7 下调教mysql记实 之三
查看>>
谈谈微服务
查看>>
phpstorm更改sql文件匹配类型
查看>>
UUID、GUID、SID、SUSID
查看>>
UCenter重置创始人和用户密码
查看>>
json教程系列(5)-json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
查看>>
String subString方法
查看>>
Python类相关的装饰器
查看>>