gridview删除时,ObjectDataSource 未能找到带参数的非泛型方法“Delete”: original_F_ID, original_F_Pic
在为gridview添加自带删除方法后,想完成先删除一条记录中的图片(数据库中保存的是图片的文件名),再删除该条记录。在GridView1_RowDeleting()中如何取F_Pic字段的数据呢?当我将girdview1的datakeynames的值设成F_ID,F_Pic时,是可以通过GridView1.DataKeys[e.RowIndex].Values["F_Pic"].ToString()取到图片文件的名,但是删除时却报上面的错误,这是为什么呢 --------------------编程问答-------------------- 大家帮忙看下,很急,在线等! --------------------编程问答-------------------- 应该是你的删除语句问题*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
最新版本:20070212
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html --------------------编程问答-------------------- 我用的删除是gridview自带的,ObjectDataSource 中一个属性是OldValuesParameterFormatString="original_{0}" ,还有一个
<DeleteParameters>
<asp:Parameter Name="Original_F_ID" Type="Int32" />
</DeleteParameters>
如果gridview的datakeynames 只设成F_ID就可以执行删除数据,但是加上F_Pic之后,图片文件可以读出来了,但删除就报错了啊 --------------------编程问答-------------------- 加上F_Pic之后语句是怎么样的 --------------------编程问答-------------------- 说老实话,不是非常明白datakeynames的用途,我只是在gridview的datakeynames增加了F_ID,F_Pic 其它都没有变,执行的删除语句也是...where F_ID=@F_ID 不知这样怎么不可以 --------------------编程问答-------------------- 或者可不可以给写个写在GridView1_RowDeleting()中的删除一行记录中的图片列图片文件的大概代码啊 --------------------编程问答-------------------- 当你的datakeynames有2个值时,你的对象的delete方法必须有2个参数 --------------------编程问答-------------------- datakeynames一般应该是你数据源的主键,至少是可以唯一标示一行的 --------------------编程问答-------------------- 只要指定ObjectDataSource的deleteCommand对应的方法和对应的DeleteParameters就可以了,我认为不需要在GridView1_RowDeleting事件中写delete语句 --------------------编程问答-------------------- Night_Elf(风暴虫) ,先谢你如上的解释,我是想在GridView1_RowDeleting事件中先执行删除该条记录附带的图片(图片名存在表中F_Pic字段)的操作,防止冗余的文件。我该在GridView1_RowDeleting事件中如何取得F_Pic字段的内容呢 --------------------编程问答-------------------- 1. 建议你可以在一个delete方法中完成对2个表数据(对象)的删除,传入2个参数,这样有利于在添加事务
2.如果你非要在GridView1_RowDeleting事件中先删除一部分数据,可以通过GridView1.DataKeys[e.RowIndex].Value当前行的绑定的主键数据 --------------------编程问答-------------------- Night_Elf(风暴虫),还不是很明白你的意思,简单的说我的表有F_ID,F_Name,F_Pic三个字段,我的数据源取自dataset中某个tableadapter的一个getdata方法,我用了objectdatasource控件和gridview绑定,以上这些关系都是用的自动生成的内容。现在想在删除一条记录前先删除F_Pic列中的文件,该列中一个×××.jpg字符串.应该在删除数据前先取得欲删除行的F_Pic的内容,***.jpg,删除这个文件后再删除这条记录.
应该怎么写呢,郁闷啊! --------------------编程问答-------------------- 再顶一下! --------------------编程问答-------------------- 各个方法中的参数需要与数据库中字段的名字完全一样,否则,可能会报告“未能找到带参数的非泛型方法”之类的错误信息。 --------------------编程问答-------------------- Object Delete 方法 --------------------编程问答-------------------- 我明白你的意思,你完全没有必要在datakeynames中写2个字段,只要一个F_ID就可以了,可以在gridview中放一列(或是隐藏列)显示,在任一行中取某个列的数值你会吧!
既然你用的是objectdatasource,那么你就可以在tableadapter中增加一个deletedata(int F_ID) 方法来删除 --------------------编程问答-------------------- deletedata(int F_ID)
{
//根据F_ID查询出F_Pic
//删除文件
//删除表数据
} --------------------编程问答-------------------- objectdatasource1.DeleteMethod="deletedata"
这边没有vs.net,要不然可以把所有代码都写出来 --------------------编程问答-------------------- 搭车,今天写的代码,各个方法中的参数需要与数据库中字段的名字完全一样,结果gv中DELETE仍然报错.但单独写了个btn_click进行测试,完全没问题。。。 --------------------编程问答-------------------- 只是dataset的一个老问题了
去掉所有的original_前缀,包括objectdatasource的,自动生成的Update和Delete里的
,然后重新config以下dataset
--------------------编程问答-------------------- vs05 sp1是不会自动产生original_前缀的,这个问题在以前在使用TABLEADPTER才会产生 --------------------编程问答-------------------- 你写的方法中所需要的参数,必须和数据库的字段名一致。否则就出现“未能找到带参数的非泛型方法”之类的错误信息。 --------------------编程问答-------------------- DataObjectTypeName="******"把这句话删除掉 --------------------编程问答-------------------- 谢谢,给你说中了.为什么?不过吗?
补充:.NET技术 , ASP.NET