Преобразован из SqlDataSource в ObjectDataSource, вызывая горе - PullRequest
0 голосов
/ 09 ноября 2010

Я создал слой доступа к данным в своем веб-приложении, которое использует ObjectDataSource вместо SqlDataSource.У меня есть FormView для обновления некоторых данных в моей базе данных.В моем старом коде asp.net у меня было что-то вроде:

<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 следующим образом:

<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», который имеет параметры:

В моем классе DBUtil у меня есть это для UpdateTrade:

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:

public DataTable GetTrade(int tradeId)
{
 SqlCommand cmd = new SqlCommand("usp_GetTrade");
 cmd.Parameters.AddWithValue("@tradeId", tradeId);
 return FillDataTable(cmd, "trade");
}

Пожалуйста, помогите!

1 Ответ

1 голос
/ 09 ноября 2010

Здравствуйте, ваш метод UpdateTrade и параметры передачи из вашего источника данных не совпадают.пожалуйста, перепроверьте их

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...