Bug avec un ObjectDataSource.
Bonjour à tous,
J'ai un bug avec mon WebForm, il me met :
Citation:
ObjectDataSource 'ObjectDataSource3' could not find a non-generic method 'UpdateEmp' that has parameters: pdecEMPNO, pstrENAME, pstrADDRESS, pstrZIP, pstrSTATE, pstrCITY, pstrJOB, pdecMGR, pdatHIREDATE, pdecSAL, pdecCOMM, pdecDEPTNO, ENAME, ADDRESS, ZIP, STATE, CITY, JOB, MGR, HIREDATE, SAL, COMM, EMPNO.
quand j'essaye de mettre à jour à l'aide du lien "Update" de mon DetailView : voici les extraits de mon code (détails) :
essai.aspx :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| //***************************************************
...
<asp: DetailsView AutoGenerateRows="False" DataKeyNames="EMPNO" DataSourceID="ObjectDataSource3"
HeaderText="EMP Details" ID="DetailsView1" runat="server" Width="275px" OnItemUpdated="DetailsView1_ItemUpdated" OnItemInserted="DetailsView1_ItemInserted" OnDataBound="DetailsView1_DataBound">
<Fields>
<asp:BoundField DataField="EMPNO" HeaderText="N°" ReadOnly="True" SortExpression="EMPNO" />
<asp:BoundField DataField="ENAME" HeaderText="Name" SortExpression="ENAME" />
<asp:BoundField DataField="ADDRESS" HeaderText="Address" SortExpression="ADDRESS" />
<asp:BoundField DataField="ZIP" HeaderText="Zip" SortExpression="ZIP" />
<asp:BoundField DataField="STATE" HeaderText="State" SortExpression="STATE" />
<asp:BoundField DataField="CITY" HeaderText="City" SortExpression="CITY" />
<asp:BoundField DataField="JOB" HeaderText="Job" SortExpression="JOB" />
<asp:BoundField DataField="MGR" HeaderText="Mgr" SortExpression="MGR" />
<asp:BoundField DataField="HIREDATE" HeaderText="Hire Date" SortExpression="HIREDATE" />
<asp:BoundField DataField="SAL" HeaderText="Sale" SortExpression="SAL" />
<asp:BoundField DataField="COMM" HeaderText="Comm" SortExpression="COMM" />
<asp:CommandField ShowEditButton="True" ShowInsertButton="True" />
</Fields>
</asp: DetailsView>
<asp:ObjectDataSource ID="ObjectDataSource3" Runat="server" TypeName="EMPDB"
SelectMethod="GetEmpByEmpNo" UpdateMethod="UpdateEmp">
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="pdecEMPNO" PropertyName="SelectedValue"
Type="Decimal" />
</SelectParameters>
<UpdateParameters>
<asp: Parameter Name="pdecEMPNO" Type="Decimal" />
<asp: Parameter Name="pstrENAME" Type="String" />
<asp: Parameter Name="pstrADDRESS" Type="String" />
<asp: Parameter Name="pstrZIP" Type="String" />
<asp: Parameter Name="pstrSTATE" Type="String" />
<asp: Parameter Name="pstrCITY" Type="String" />
<asp: Parameter Name="pstrJOB" Type="String" />
<asp: Parameter Name="pdecMGR" Type="Decimal" />
<asp: Parameter Name="pdatHIREDATE" Type="DateTime" />
<asp: Parameter Name="pdecSAL" Type="Decimal" />
<asp: Parameter Name="pdecCOMM" Type="Decimal" />
<asp: Parameter Name="pdecDEPTNO" Type="Decimal" />
</UpdateParameters>
</asp:ObjectDataSource>
... |
//********************************************************
Extrait de ma classe EMPDB :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
//********************************************************
...
public static int UpdateEmp(decimal pdecEMPNO, string pstrENAME, string pstrADDRESS, string pstrZIP,
string pstrSTATE, string pstrCITY, string pstrJOB, decimal pdecMGR,
DateTime pdatHIREDATE,
decimal pdecSAL, decimal pdecCOMM, decimal pdecDEPTNO)
{
string connectionString = ConfigurationManager.ConnectionStrings["connTESTORACLE"].ConnectionString;
OracleConnection connOracleABASE = new OracleConnection();
connOracleABASE.ConnectionString=connectionString;
connOracleABASE.Open();
string queryString = "UPDATE EMP SET ENAME=:Ename, JOB=:Job, " +
"MGR=:MGR, HIREDATE=:HIREDATE, SAL=:SAL, COMM=:COMM, DEPTNO=: DEPTNO, ADDRESS=:ADDRESS, ZIP=:ZIP, " +
"STATE=:STATE, CITY=:CITY WHERE (EMP.EMPNO = :EmpNo)";
OracleCommand CmdOracleABASE = new OracleCommand(queryString, connOracleABASE);
OracleParameter parOracleTestOracle = new OracleParameter();
parOracleTestOracle.ParameterName = ":Ename";
parOracleTestOracle.Value = pstrENAME;
parOracleTestOracle.OracleType = OracleType.VarChar;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
//OracleParameter parOracleTestOracle = new OracleParameter();
parOracleTestOracle.ParameterName = ":Job";
parOracleTestOracle.Value = pstrJOB;
parOracleTestOracle.OracleType = OracleType.VarChar;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
//OracleParameter parOracleTestOracle = new OracleParameter();
parOracleTestOracle.ParameterName = ":MGR";
parOracleTestOracle.Value = pdecMGR;
parOracleTestOracle.OracleType = OracleType.Number;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
//OracleParameter parOracleTestOracle = new OracleParameter();
parOracleTestOracle.ParameterName = ":HIREDATE";
parOracleTestOracle.Value = pdatHIREDATE;
parOracleTestOracle.OracleType = OracleType.DateTime;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
//OracleParameter parOracleTestOracle = new OracleParameter();
parOracleTestOracle.ParameterName = ":SAL";
parOracleTestOracle.Value = pdecSAL;
parOracleTestOracle.OracleType = OracleType.Number;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
//OracleParameter parOracleTestOracle = new OracleParameter();
parOracleTestOracle.ParameterName = ":COMM";
parOracleTestOracle.Value=pdecCOMM;
parOracleTestOracle.OracleType = OracleType.Number;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
//OracleParameter parOracleTestOracle = new OracleParameter();
parOracleTestOracle.ParameterName = ": DEPTNO";
parOracleTestOracle.Value = pdecDEPTNO;
parOracleTestOracle.OracleType = OracleType.Number;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
//OracleParameter parOracleTestOracle = new OracleParameter();
parOracleTestOracle.ParameterName = ":ADDRESS";
parOracleTestOracle.Value = pstrADDRESS;
parOracleTestOracle.OracleType = OracleType.VarChar;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
//OracleParameter parOracleTestOracle = new OracleParameter();
parOracleTestOracle.ParameterName = ":ZIP";
parOracleTestOracle.Value =pstrZIP;
parOracleTestOracle.OracleType = OracleType.VarChar;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
//OracleParameter parOracleTestOracle = new OracleParameter();
parOracleTestOracle.ParameterName = ":STATE";
parOracleTestOracle.Value =pstrSTATE;
parOracleTestOracle.OracleType = OracleType.VarChar;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
//OracleParameter parOracleTestOracleEmpNo = new OracleParameter();
parOracleTestOracle.ParameterName = ":CITY";
parOracleTestOracle.Value =pstrCITY;
parOracleTestOracle.OracleType = OracleType.VarChar;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
//OracleParameter parOracleTestOracleEmpNo = new OracleParameter();
parOracleTestOracle.ParameterName = ":EMPNO";
parOracleTestOracle.Value = pdecEMPNO;
parOracleTestOracle.OracleType = OracleType.Number;
CmdOracleABASE.Parameters.Add(parOracleTestOracle);
int rowsAffected = 0;
try
{
rowsAffected = CmdOracleABASE.ExecuteNonQuery();
}
finally
{
connOracleABASE.Close();
}
return rowsAffected;
}
...
//******************************************************* |
Voilà, j'espère que c'est assez clair.
Je ne comprends pas pourquoi il me parle des paramètres :
Citation:
ENAME, ADDRESS, ZIP, STATE, CITY, JOB, MGR, HIREDATE, SAL, COMM, EMPNO,
alors que je n'ai déclaré que :
Citation:
pdecEMPNO, pstrENAME, pstrADDRESS, pstrZIP, pstrSTATE, pstrCITY, pstrJOB, pdecMGR, pdatHIREDATE, pdecSAL, pdecCOMM, pdecDEPTNO
Merci d'avance pour vos réponses.
laurent.