“/NNLLbook”应用程序中的服务器错误。
--------------------------------------------------------------------------------
ObjectDataSource“ObjectDataSource1”未能找到带参数的非泛型方法“UpdateOnlyAnswer”: answer, atime, Original_bid, na, email, title, btime, bid。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: ObjectDataSource“ObjectDataSource1”未能找到带参数的非泛型方法“UpdateOnlyAnswer”: answer, atime, Original_bid, na, email, title, btime, bid。
出错页面m_deal.aspx,出错代码和设置:
1、在DataSet里新建TableAdapter,SQL语句:
SELECT bid, na, email, title, body, btime, answer, atime
FROM books
WHERE (bid = @bid)
在“创建方法将更新直接发送到数据(GenerateDBDirectMethods)”前打勾
2、在TableAdapter里新建Query,Name="UpdateOnlyAnswer",SQL语句:
UPDATE [books] SET [answer] = @answer, [atime] = @atime WHERE (([bid] = @Original_bid))
3、在aspx文件里绑定ObjectDataSource:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="bookdataTableAdapters.booksTableAdapter" UpdateMethod="UpdateOnlyAnswer">
<UpdateParameters>
<asp:Parameter Name="answer" Type="String" />
<asp:Parameter Name="atime" Type="DateTime" />
<asp:Parameter Name="bid" Type="Int32" />
</UpdateParameters>
<SelectParameters>
<asp:QueryStringParameter Name="bid" QueryStringField="id" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
解决方法:字段不同,方法分开,
1、在DataSet里,新建TableAdapter,Name="ShowOnlyBook",SQL语句:select bid,na,email,title,body,btime from books where bid=@bid
2、在DataSet里,新建TableAdapter,Name="ShowOnlyAnswer",SQL语句:select bid,ishide,answer,atime from books where bid=@bid
3、在aspx文件里绑定ObjectDataSource:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}"
SelectMethod="GetData" TypeName="bookdataTableAdapters.ShowOnlyBookTableAdapter">
<SelectParameters>
<asp:QueryStringParameter Name="bid" QueryStringField="id" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" OldValuesParameterFormatString="original_{0}"
SelectMethod="GetData" TypeName="bookdataTableAdapters.ShowOnlyAnswerTableAdapter"
UpdateMethod="Update">
<UpdateParameters>
<asp:Parameter Name="ishide" Type="Int16" />
<asp:Parameter Name="answer" Type="String" />
<asp:Parameter Name="atime" Type="DateTime" />
<asp:Parameter Name="Original_bid" Type="Int32" />
</UpdateParameters>
<SelectParameters>
<asp:QueryStringParameter Name="bid" QueryStringField="id" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>