Bonjour à tous,

J'ai un bug avec mon WebForm, il me met :

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 XML : Sélectionner tout - Visualiser dans une fenêtre à part
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 XML : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

ENAME, ADDRESS, ZIP, STATE, CITY, JOB, MGR, HIREDATE, SAL, COMM, EMPNO,
alors que je n'ai déclaré que :

pdecEMPNO, pstrENAME, pstrADDRESS, pstrZIP, pstrSTATE, pstrCITY, pstrJOB, pdecMGR, pdatHIREDATE, pdecSAL, pdecCOMM, pdecDEPTNO
Merci d'avance pour vos réponses.

laurent.