首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SqlDataSource转换为ObjectDataSource,造成悲伤

从SqlDataSource转换为ObjectDataSource,造成悲伤
EN

Stack Overflow用户
提问于 2010-11-09 09:26:58
回答 1查看 885关注 0票数 0

我在我的web应用程序中创建了一个数据访问层,它使用ObjectDataSource而不是SqlDataSource。我有一个FormView来更新数据库中的一些数据。在我的旧asp.net代码中,我有如下内容:

代码语言:javascript
复制
<asp:SqlDataSource ID="sdsTradeDetails" runat="server" 
 ConnectionString="<%$ ConnectionStrings:ForexDB %>" 
 SelectCommand="usp_GetTrade" SelectCommandType="StoredProcedure" 
 UpdateCommand="usp_UpdateTrade" UpdateCommandType="StoredProcedure" 
 <SelectParameters>
  <asp:ControlParameter Name="tradeId" ControlID="grdTrades" PropertyName="SelectedDataKey.Value" />            
 </SelectParameters>
 <UpdateParameters>
  <asp:ControlParameter Name="tradeId" ControlId="frmTrade" PropertyName="SelectedValue"  />
 </UpdateParameters>
</asp:SqlDataSource>

效果很好。我已经用以下内容替换了SqlDataSource:

代码语言:javascript
复制
<asp:ObjectDataSource
 id="srcTrade" 
 TypeName="DatabaseComponent.DBUtil" 
 SelectMethod="GetTrade"
 UpdateMethod="UpdateTrade"
 runat="server">
 <SelectParameters>
  <asp:QueryStringParameter Name="tradeId" QueryStringField="tradeId" />               
 </SelectParameters>
 <UpdateParameters>
  <asp:ControlParameter Name="tradeId" ControlId="frmTrade" PropertyName="SelectedValue"  />
 </UpdateParameters>
</asp:ObjectDataSource>

但是现在,当我单击FormView中的更新按钮时,我得到了这个错误:

例外详细信息: System.InvalidOperationException: ObjectDataSource 'srcTrade‘找不到一个非泛型方法'UpdateTrade’,该方法具有参数:符号、pctAccountRisked、tradeSetupId、lotsPerUnit、initialStopPrice、tfCode、MAEPips、MFEPips、tradeGrade、executionGrade、tradeTypeId、comment、tradeId。

在我的DBUtil类中,我为UpdateTrade提供了以下内容:

代码语言:javascript
复制
public void UpdateTrade(
 int tradeId, 
 string symbol, 
 decimal pctAccountRisked, 
 string tradeSetupId, 
 decimal lotsPerUnit, 
 decimal initialStopPrice, 
 string tfCode, 
 int MAEPips, 
 int MFEPips, 
 int tradeGrade, 
 int executionGrade, 
 string comment)
{
 SqlCommand cmd = new SqlCommand("usp_UpdateTrade");
 cmd.Parameters.AddWithValue("@tradeId", tradeId);
 cmd.Parameters.AddWithValue("@symbol", symbol);
 cmd.Parameters.AddWithValue("@pctAccountRisked", pctAccountRisked);
 cmd.Parameters.AddWithValue("@tradeSetupId", tradeSetupId);
 cmd.Parameters.AddWithValue("@lotsPerUnit", lotsPerUnit);
 cmd.Parameters.AddWithValue("@initialStopPrice", initialStopPrice);
 cmd.Parameters.AddWithValue("@tfCode", tfCode);
 cmd.Parameters.AddWithValue("@MAEPips", MAEPips);
 cmd.Parameters.AddWithValue("@MFEPips", MFEPips);
 cmd.Parameters.AddWithValue("@tradeGrade", tradeGrade);
 cmd.Parameters.AddWithValue("@executionGrade", executionGrade);
 cmd.Parameters.AddWithValue("@comment", comment);
 UpdateTable(cmd, "trade");
}

对于GetTrade来说:

代码语言:javascript
复制
public DataTable GetTrade(int tradeId)
{
 SqlCommand cmd = new SqlCommand("usp_GetTrade");
 cmd.Parameters.AddWithValue("@tradeId", tradeId);
 return FillDataTable(cmd, "trade");
}

请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-09 09:40:29

嗨,您的UpdateTrade方法和数据源中传递的参数不匹配。请再检查一下

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4132125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档