Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1540 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C# / ASP.NET] Event "Click" qui fonctionne pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C# / ASP.NET] Event "Click" qui fonctionne pas

n°956736
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-01-2005 à 17:45:37  profilanswer
 

J'ai écrit et réécrit mon code, de 25 façon différentes... Et y'a pas moyen, j'ai toujours le même problème.
 
J'ai une série de "ButtonLink", dont le "Click" lance "languageChange()".
Cet event handler crée une autre série de "ButtonLink", dont le "Click" lance "rubriqueChange".
 
Et là, y'a pas moyen, autant la première série de liens fonctionne, autant la seconde ne fonctionne pas.
 
Je bosse dans un Contrôle Utilisateur.
Dans la page, il n'y a que ce contrôle.
 
Voilà le code du contrôle :
 

Code :
  1. public class navigation : System.Web.UI.UserControl
  2. {
  3.  protected System.Web.UI.HtmlControls.HtmlTableRow rowLanguage;
  4.  protected System.Web.UI.HtmlControls.HtmlTableRow rowRubriques;
  5.  protected System.Web.UI.HtmlControls.HtmlTable tablePages;
  6.  protected System.Web.UI.HtmlControls.HtmlTableRow rowPages;
  7.  private string lan;
  8.  private void Page_Load(object sender, System.EventArgs e)
  9.  {
  10.   displayLanguages();
  11.  }
  12.  private void displayLanguages()
  13.  {
  14.   System.Data.DataTable dt;
  15.   database db = new database();
  16.   dt = db.getDataTable("select codlan, lannam from langueList() order by lannam", "lan" );
  17.   foreach (System.Data.DataRow row in dt.Rows)
  18.   {
  19.    HtmlTableCell cellLanguage = new HtmlTableCell();
  20.    LinkButton link = new LinkButton();
  21.    link.ID = row[0].ToString();
  22.    link.Text = row[1].ToString();
  23.    link.Click += new EventHandler(languageChange);
  24.    cellLanguage.Controls.Add(link);
  25.    rowLanguage.Cells.Add(cellLanguage);
  26.   }
  27.  }
  28.  private void displayRubriques()
  29.  {
  30.   System.Data.DataTable dt;
  31.   database db = new database();
  32.   rowRubriques.Controls.Clear();
  33.   dt = db.getDataTable("select objnum, typobj, objlan, objnam from obj where objlan = '" + this.lan + "' and objpar is null and typpar is null and lanpar is null and objsta = 'V' and typobj != 'HPG' order by objnam", "lan" );
  34.   foreach (System.Data.DataRow row in dt.Rows)
  35.   {
  36.    HtmlTableCell cellRubrique = new HtmlTableCell();
  37.    LinkButton link = new LinkButton();
  38.    link.ID = row[0].ToString() + "." + row[1].ToString() + "." + row[2].ToString();
  39.    link.Text = row[3].ToString();
  40.    link.Click += new EventHandler(rubriqueChange);
  41.    cellRubrique.Controls.Add(link);
  42.    rowRubriques.Cells.Add(cellRubrique);
  43.   }
  44.  }
  45.  private void languageChange(object sender, EventArgs e)
  46.  {
  47.   _languageChange((LinkButton) sender);
  48.  }
  49.  private void _languageChange(LinkButton sender)
  50.  {
  51.   this.lan = sender.ID;
  52.   foreach (HtmlTableCell cell in rowLanguage.Cells)
  53.   {
  54.    ((LinkButton) cell.Controls[0]).BackColor = System.Drawing.Color.Transparent;
  55.   }
  56.   sender.BackColor = System.Drawing.Color.Yellow;
  57.   displayRubriques();
  58.  }
  59.  private void rubriqueChange(object sender, EventArgs e)
  60.  {
  61.   int a = 1;
  62.   a = a / (a - a);
  63.   _rubriqueChange((LinkButton) sender);
  64.  }
  65.  private void _rubriqueChange(LinkButton sender)
  66.  {
  67.   Label toto = new Label();
  68.   toto.Text = "[" + this.lan + "]";
  69.   Page.Controls.Add(toto);
  70. //   _languageChange((LinkButton) rowLanguage.FindControl(lan));
  71. /*
  72.   foreach (HtmlTableCell cell in rowRubriques.Cells)
  73.   {
  74.    ((LinkButton) cell.Controls[0]).BackColor = System.Drawing.Color.Transparent;
  75.   }
  76.   sender.BackColor = System.Drawing.Color.Yellow;
  77. */
  78.   //   displayRubriques(((LinkButton) sender).ID);
  79.  }
  80.  // Le bordel généré automatiquement par .NET
  81. }


 
Quand je clique sur une langue, j'ai bien la liste des rubriques correspondantes qui s'affiche.
Lorsque je clique sur une rubrique, la liste des rubrique disparaît, et rien ne se passe, je n'ai pas mon Label "toto" qui s'affiche. Encore mieu, le code de l'EventHandler "rubriqueChange" qui devrait planter avec une division par zéro (c'est fait exprès pour debug) ne plante pas. Il ne s'éxécute donc pas.
Le languageChange non plus ne s'execute pas.
 
Chose que je ne comprends d'ailleurs pas, c'est ça (code généré par l'appli) :

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  2. <HTML>
  3. <HEAD>
  4.  <title>NetCms Front Office</title>
  5.  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  6.  <meta name="CODE_LANGUAGE" Content="C#">
  7.  <meta name="vs_defaultClientScript" content="JavaScript">
  8.  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
  9. </HEAD>
  10. <body MS_POSITIONING="GridLayout">
  11.  <form name="Form1" method="post" action="default.aspx" id="Form1">
  12. <input type="hidden" name="__EVENTTARGET" value="" />
  13. <input type="hidden" name="__EVENTARGUMENT" value="" />
  14. <input type="hidden" name="__VIEWSTATE" value="dDw0MDQ3ODc1NjA7dDw7bDxpPDE+Oz47bDx0PDtsPGk8MT47PjtsPHQ8O2w8aTwx" />
  15. <script language="javascript">
  16. <!--
  17. function __doPostBack(eventTarget, eventArgument) {
  18.  var theform;
  19.  if (window.navigator.appName.toLowerCase().indexOf("netscape" ) > -1) {
  20.   theform = document.forms["Form1"];
  21.  }
  22.  else {
  23.   theform = document.Form1;
  24.  }
  25.  theform.__EVENTTARGET.value = eventTarget.split("$" ).join(":" );
  26.  theform.__EVENTARGUMENT.value = eventArgument;
  27.  theform.submit();
  28. }
  29. // -->
  30. </script>
  31. <table border="1">
  32. <tr id="mainNavigation_rowLanguage">
  33. <td><a id="mainNavigation_DEU" href="javascript:__doPostBack('mainNavigation$DEU','')" style="background-color:Transparent;">Allemand</a></td>
  34. <td><a id="mainNavigation_ENG" href="javascript:__doPostBack('mainNavigation$ENG','')" style="background-color:Transparent;">Anglais</a></td>
  35. <td><a id="mainNavigation_ESP" href="javascript:__doPostBack('mainNavigation$ESP','')" style="background-color:Transparent;">Espagnol</a></td>
  36. <td><a id="mainNavigation_FRA" href="javascript:__doPostBack('mainNavigation$FRA','')" style="background-color:Yellow;">Français</a></td>
  37. <td><a id="mainNavigation_ITA" href="javascript:__doPostBack('mainNavigation$ITA','')" style="background-color:Transparent;">Italien</a></td>
  38. <td><a id="mainNavigation_NED" href="javascript:__doPostBack('mainNavigation$NED','')" style="background-color:Transparent;">Néerlandais</a></td>
  39. </tr>
  40. </table>
  41. <table border="1">
  42. <tr id="mainNavigation_rowRubriques">
  43. <td><a id="mainNavigation_1.FAK.FRA" href="javascript:__doPostBack('mainNavigation$1.FAK.FRA','')">Infos groupe</a></td>
  44. <td><a id="mainNavigation_2.FAK.FRA" href="javascript:__doPostBack('mainNavigation$2.FAK.FRA','')">Une marque citoyenne</a></td>
  45. </tr>
  46. </table>
  47. <table id="mainNavigation_tablePages" border="1">
  48. <tr id="mainNavigation_rowPages">
  49. </tr>
  50. </table>
  51.  </form>
  52. </body>
  53. </HTML>


 
=> Entre les deux séries de boutons (avec un EventHandler différent), il n'y a aucune différence dans l'appel du "doPostBack". Comment l'appli pourraît-elle savoir lequel utiliser de toute façon :??:
 
Là, je sais plus quoi faire, ça me gonfle.
Le souci, c'est que cette appli, qui va faire le rendu d'un site 100% dynamique créé avec l'autre appli qui me pose déjà tant de soucis, est un peu très bordelique, et j'ai absolument besoin de passer par un système de ce genre pour gérer les menus (en fait, techniquement, il n'y a pas de différence entre les rubriques et les sous-rubriques. Mieu, même si une rubrique a des sous-rubriques, si elle n'est pas d'un type spécifique, je ne dois pas les afficher dans la nav. Enfin, c'est trop le bordel pour être géré de façon classique en QueryString (ou alors ça va être une usine à gaz encore pire)


Message édité par Arjuna le 19-01-2005 à 17:50:49
mood
Publicité
Posté le 19-01-2005 à 17:45:37  profilanswer
 

n°956737
chrisbk
-
Posté le 19-01-2005 à 17:46:53  profilanswer
 

la mise en page est un peu fouillie [:zaib3k]
tu pourrais retapisser tout ca ?

n°956738
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-01-2005 à 17:47:43  profilanswer
 

de quoi :??:

n°956740
chrisbk
-
Posté le 19-01-2005 à 17:48:28  profilanswer
 

heuh bin j'ai un peu un ascenceur horizontal de 4mm de long, c'est relou


Message édité par chrisbk le 19-01-2005 à 17:48:37
n°956741
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-01-2005 à 17:50:08  profilanswer
 

Ben j'y peut rien, c'est la chaîne du viewstate :p
 
Bon, je la raccourci ;)

n°956743
chrisbk
-
Posté le 19-01-2005 à 17:51:08  profilanswer
 

y'a aussi le  
dt = db.getDataTable("select objnum, typobj, objlan, objnam from obj where....
 
si tu pourrais filer des coups de hache la dedans
 
edit : j'ai rien dit, ca roule


Message édité par chrisbk le 19-01-2005 à 17:51:21
n°956748
chrisbk
-
Posté le 19-01-2005 à 17:52:46  profilanswer
 

t'as pas setter le "onClick" de ton nouveau boutoon, j'ai l'impression, c normal ?
 
un truc genre :  
 
 

Code :
  1. link.Click += new EventHandler(languageChange);


mais pour ton 'toto'


Message édité par chrisbk le 19-01-2005 à 17:53:32
n°956752
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-01-2005 à 17:53:56  profilanswer
 

Ben si :

Code :
  1. link.Click += new EventHandler(rubriqueChange);


 
(y'a pas de onClick)


Message édité par Arjuna le 19-01-2005 à 17:54:20
n°956754
chrisbk
-
Posté le 19-01-2005 à 17:54:52  profilanswer
 

bin vi mais ton nouveau bouton, c'est toto, pas link ?
 
mince jme suis perdu dans tes languagechange et rubriquechange


Message édité par chrisbk le 19-01-2005 à 17:55:55
n°956755
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-01-2005 à 17:55:34  profilanswer
 

chrisbk a écrit :

t'as pas setter le "onClick" de ton nouveau boutoon, j'ai l'impression, c normal ?
 
un truc genre :  
 
 

Code :
  1. link.Click += new EventHandler(languageChange);


mais pour ton 'toto'


Ben toto c'est pas un bouton, c'est un bout de texte qui devrait apparaître quand je clique sur une rubrique.
Mais là, quand je clique, les rubriques disparaissent, et j'ai plus que les langues, et pas de toto. Comme si je venais d'arriver sur la page en fait.

mood
Publicité
Posté le 19-01-2005 à 17:55:34  profilanswer
 

n°956756
Arjuna
Aircraft Ident.: F-MBSD
Posté le 19-01-2005 à 17:56:45  profilanswer
 

C'est celui-là qui marche pas : (displayRubriques())

Code :
  1. link.Click += new EventHandler(rubriqueChange);


Pas celui-là : (displayLanguages())

Code :
  1. link.Click += new EventHandler(languageChange);


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C# / ASP.NET] Event "Click" qui fonctionne pas

 

Sujets relatifs
NET SEND[ASP/Inet] Execute et OpenURL
installation du .NET 2003VB .NET récupérer la position de la souris
DoEvents et VB NETProbleme appli .net strategie de securité du framework .net
Creer un fichier Excel en C# .NETVisual C# .NET et les "cannot copy assembly"
refersto=selection.adresse ne fonctionne pas[asp] quelle base de données utiliser en asp?
Plus de sujets relatifs à : [C# / ASP.NET] Event "Click" qui fonctionne pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR