CS0123: No overload for 'OK_Click' matches delegate 'System.EventHandler' [Résolu]

Signaler
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006
-
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006
-
salut,

ce message d'erreur apparait : CS0123: No overload for 'OK_Click' matches delegate 'System.EventHandler' lorsque je compile.
voila mon code de mapage.aspx

<asp:FormView
id="form_pers"
runat="server"
DataSourceID="pers_SDS"
>

<ItemTemplate>

<h2>DEMANDE D'ACCES
</h2>

<table
style="width: 483px; height: 210px"
align="center">

<tr>

<td
colspan="4">Vous êtes sur le point de créer une demande pour

</td>

</tr>

<tr>

<td>WWID
</td>

<td><asp:TextBox
ID="wwid_TB"
runat="server"
Text='<%# Bind("wwid_pers") %>
'
/></td>

<td><asp:Button
ID="OK"
runat="server"
Text="OK"
OnClick="OK_Click"
/></td>

<td><a
href
=
"javascript:ouvreFenetre('http://browsejjeds.jnj.com/browsejjeds/', 550, 440)">JJEDS
</a></td>

</tr>

<asp:Panel
ID="info_usr"
runat="server"
Visible="true"><tr>

<td><asp:Label
ID="Label1"
runat="server"
Text="nom"
/></td>

<td><asp:TextBox
ID="nom_TB"
runat="server"
/></td>

<td><asp:Label
ID="Label2"
runat="server"
Text="prénom"
/></td>

<td><asp:TextBox
ID="prenom_TB"
runat="server"
/></td>

</tr>

<tr>

<td>système
</td>

<td>

<asp:DropDownList
ID="sys_DDL"
runat="server"
DataSourceID="system"
DataTextField="nom_logi"

DataValueField="id_logi"
AutoPostBack="true"
OnDataBound="sys_DDL_ajou_item"
/>

<asp:SqlDataSource
ID="system"
runat="server"
ConnectionString="<%$ ConnectionStrings:AccessRequestConnectionString %>
"

SelectCommand="SELECT * FROM [logiciel] ORDER BY [nom_logi]"></asp:SqlDataSource>

</td>

<td>service
</td>

<td>

<asp:DropDownList
ID="serv_DDL"
runat="server"
DataSourceID="service"
DataTextField="nom_serv"

DataValueField="id_serv"
AutoPostBack="true"
OnDataBound="serv_DDL_ajou_item"
/>

<asp:SqlDataSource
ID="service"
runat="server"
ConnectionString="<%$ ConnectionStrings:AccessRequestConnectionString %>
"

SelectCommand="SELECT * FROM [service] ORDER BY [nom_serv]"></asp:SqlDataSource>

</td>

</tr></

asp:Panel>

</table>

</ItemTemplate>

</asp:FormView></form>

et le code de mapage.aspx.cs
public

partial
class
Public_demande : System.Web.UI.
Page{

protected
void Page_Load(
object sender,
EventArgs e){

}

protected
void OK_Click(
object sender, System.Web.UI.WebControls.
DataListItemEventArgs e){

if(((
TextBox)e.Item.FindControl(
"wwid_TB")).Text !=
""){

Usr u =
new
Usr();u.loadInfos(

null, ((
TextBox)e.Item.FindControl(
"wwid_TB")).Text);((

TextBox)e.Item.FindControl(
"prenom_TB")).Text = u.firstName;((

TextBox)e.Item.FindControl(
"nom_TB")).Text = u.lastName;((

Panel)e.Item.FindControl(
"info_usr")).Visible =
true;}

}

 

protected
void sys_DDL_ajou_item(
object sender, System.Web.UI.WebControls.
DataListItemEventArgs e){

((

DropDownList)e.Item.FindControl(
"sys_DDL")).Items.Insert(0,
"");}

protected
void serv_DDL_ajou_item(
object sender, System.Web.UI.WebControls.
DataListItemEventArgs e){

((

DropDownList)e.Item.FindControl(
"serv_DDL")).Items.Insert(0,
"");}

}

je ne suis pas tres douee en langage objet, quelqu'un peut m'aider ?
ce message apparait depuis que j'ai rajouté le formView et tout ce qui va avec <ItemTemplate
>.
merci a vous

10 réponses

Messages postés
91
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
21 février 2008

Essaie de mettre un EventArgs au lieu d'un System.Web.UI.WebControls.FormViewCommandEventArgs comme paramètre dans ta fonction protected
void sys_DDL_ajou_item.

Puis dans le code de cette fonction:
 ((DropDownList
)form_pers.FindControl(
"sys_DDL")).Items.Insert(0,
"");
Messages postés
91
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
21 février 2008

C'est normal, tu appelles ta fonction lorsque tu cliques sur un button et dans la fonction appelée tu lui dis que l'eventargument est un DataListItemEventArgs d'où incompatibilité.
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

je suis obligée d'utiliser DataListItemEventArgs pour récupérer ma textBox. De plus, ca me fait l'erreur pour les ddl aussi!!!
une solution ?
Messages postés
91
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
21 février 2008

tu rajoutes à ton boutton: CommandName="OK" et à ta formview: onitemcommand="vdItemcommand"

puis dans le code-behind:

void vdItemCommand(Object sender, FormViewCommandEventArgs e)
  {

      if (e.CommandName == "OK")
    {
      



            if
(((

TextBox
)e.Item.FindControl(

"wwid_TB"
)).Text !=

""
)



            {



               Usr
u =

new



Usr
();



               u.loadInfos(null, ((
TextBox)e.Item.FindControl(
"wwid_TB")).Text);


               ((TextBox)e.Item.FindControl(
"prenom_TB")).Text = u.firstName;


               ((TextBox)e.Item.FindControl(
"nom_TB")).Text = u.lastName;


               ((Panel)e.Item.FindControl(
"info_usr")).Visible =
true;


         }


   }
}
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

j'ai ajouté ton morceau de code et j'ai l'erreur :
CS0117: 'System.Web.UI.WebControls.FormViewCommandEventArgs' does not contain a definition for 'Item'
pour cette ligne
if (((TextBox)e.Item.FindControl("wwid_TB")).Text != "")
aussi, que dois mettre dans OK_Click ? je le supprime ?
Messages postés
91
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
21 février 2008

Essaie de mettre à la place de e.item.FindControl("nomducontrol"), form_pers.Row.FindControl("nomducontrol").
tu vire l'evenement OK_Click il ne sert plus à grand chose
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

je te remercie gldfpd...
it works quite well !
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

excuse moi encore
j'ai maintenat ce message d'erreur :
CS0123: No overload for 'sys_DDL_ajou_item' matches delegate 'System.EventHandler'
pour cette ligne

je pensais avoir compris le fonctionnement mais la je m'apercois que je n'arrive pas a appliquer ce que tu m'as dit...
j'ai modifié le code behind des DDL de cette facon :
protected

void sys_DDL_ajou_item(
object sender, System.Web.UI.WebControls.
FormViewCommandEventArgs e)
{
   ((
DropDownList)form_pers.FindControl(
"sys_DDL")).Items.Insert(0,
"");
}
si tu pouvais m'aider encore...
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

merci, je te tiens au courant de mon avancée !
Messages postés
88
Date d'inscription
mardi 3 mai 2005
Statut
Membre
Dernière intervention
17 septembre 2006

ok, ca fonctionne correctement maintenant !
il faut mettre EventArgs car c'est un argument et non pas un évenement declencheur si j'ai bien compris.
en tous cas merci pour tout !