[Résolu] [C#.Net] Problème de HiddenField.Value toujours vide

Problème de HiddenField.Value toujours vide [Résolu] [C#.Net] - C#/.NET managed - Programmation

Marsh Posté le 30-07-2006 à 20:36:23    

Bonzour à tous :)
 
J'ai un GridView qui contient des lignes contenant une textbox et un hiddenfield sensés contenir la même chose (mappé à la même propriété).

Code :
  1. <TemplateField>
  2.   <ItemTemplate>
  3.     <asp:TextBox ID="tbActive" Text='<%# Eval("active" ) %>' runat="server" />
  4.     <asp:HiddenField ID="hiddenActive" Value='<%# Eval("active" ) %>' runat="server" />


J'affiche le gridView à l'aide d'un datasource puis DataBind().
Ensuite je veux récupérer ligne par ligne ce que contient mon gridView. J'utilise donc la méthode FindControl().  
J'obtiens le bon Texte dans ma TextBox. Par contre, la Value de mon HiddenField est toujours la chaîne vide !!
Mon code ci-dessous est-il incorrect pour le HiddenField ?

Code :
  1. for (int i = 0; i < myGridView.Rows.Count; i++)
  2. {
  3.   HiddenField hiddenActive = myGridView.Rows[i].FindControl("hiddenActive" ) as HiddenField;
  4.   string active = hiddenActive.Value.ToString();  // toujours vide !!!
  5. }


D'autre part, je n'arrive pas à trouver des infos sur les symboles :
<%# ... %>
<%$ ... %>
<%@ ... %>
Si vous pouviez me dire où chercher, et comment ça s'appelle surtout :)
 
Merci de votre aide :)


Message édité par Roodie le 03-08-2006 à 20:11:03
Reply

Marsh Posté le 30-07-2006 à 20:36:23   

Reply

Marsh Posté le 30-07-2006 à 20:44:50    

je n'ai jms utilisé le hiddenfield, cependant tu peux le remplacer par un textbox ou un label et placer la propriété visible à false
 
<TemplateField>  
   <ItemTemplate>    
      <asp:TextBox ID="tbWin" Text='<%# Eval("win" ) %>' runat="server" />    
      <asp:TextBox ID="hiddenActive" Visible="false" Value='<%# Eval("active" ) %>' runat="server" />

Reply

Marsh Posté le 30-07-2006 à 22:07:41    

Coucou moi233333222222
J'avais déjà essayé un TextBox à Visible="false". Seulement, à chaque fois que ma page se reloadait, la TextBox devenait visible :(
Ca me contraignait à remettre Visible="false" dans toutes mes méthodes :(
Mais si je n'y arrive pas avec le HiddenField, je serais bien obligé de passé par une TexTBox ou Label.  
 
Mon problème vient peut-être du Value='<%# Eval("active" ) %>'
Tu n'aurais pas des infos sur les symboles <%# ... %> <%$ ... %> <%@ ... %> ?
 
Merci bien à toi, et si qqn a une ptite idée :)
 
Edit : ah, j'ai dit une bêtise. Le Visible="false" se conserve bien :)


Message édité par Roodie le 30-07-2006 à 22:18:53
Reply

Marsh Posté le 01-08-2006 à 14:03:45    

Question : à quel moment ton champ caché est vide ?
J'en ai utilisé plein et ça marche très bien, mais ça dépend dans quelle méthode tu lis sa valeur.

Reply

Marsh Posté le 01-08-2006 à 19:01:25    

Bin, mon HiddenField est caché tout le temps puisque c'est un HiddenField  :heink:  
Et j'essaie de lire sa valeur à la suite d'un click sur un bouton.  
Mais ce qui est bizarre, c'est que lorsque c'est une TextBox, TextBox.Text contient la bonne valeur alors que lorsque c'est un HiddenField, HiddenField.Value ne contient rien.  
Désolé si je n'arrive pas bien à m'expliquer... ;(
Merci bien quand même !

Reply

Marsh Posté le 01-08-2006 à 21:33:42    

Roodie a écrit :

Bin, mon HiddenField est caché tout le temps puisque c'est un HiddenField  :heink:

??? Nan la question c'était à quel moment tu t'aperçois qu'il est vide. Lit bien chaque mot dans les post STP   :jap:  

Roodie a écrit :

Et j'essaie de lire sa valeur à la suite d'un click sur un bouton.  
Mais ce qui est bizarre, c'est que lorsque c'est une TextBox, TextBox.Text contient la bonne valeur alors que lorsque c'est un HiddenField, HiddenField.Value ne contient rien. Désolé si je n'arrive pas bien à m'expliquer... ;(
Merci bien quand même !

Je veux bien t'expliquer, mais va falloir répondre à la question en gras dans mon post précédent. Tu sais ce que c'est une méthode ?

Reply

Marsh Posté le 01-08-2006 à 21:54:24    

Oops lol.  
J'ai une page .aspx contenant un gridView bindé sur un datasource, lui-même mappé à une List<Object>.  
Ce gridView contient dans ses colonnes :  

Code :
  1. <asp:TextBox ID="tbActive" Text="<%# Eval("field_name" ) %> runat="server" />
  2. <asp:HiddenField ID="hiddenActive" Value="<%# Eval("field_name" ) %> runat="server" />


J'ai aussi plusieurs boutons dans ma page et à l'intérieur du gridView. Dans les méthodes qui catch le click sur ces boutons, je parcours mon gridView, ligne pas ligne, control par control de cette façon :  

Code :
  1. for (int i = 0; i < myGridView.Rows.Count; i++)
  2. {
  3.   HiddenField hiddenActive = myGridView.Rows[i].FindControl("hiddenActive" ) as HiddenField;
  4.   string hidden_active = hiddenActive.Value.ToString();  // toujours vide !!!
  5.   TextBox tbActive = myGridView.Rows[i].FindControl("tbActive" ) as TextBox;
  6.   string tb_active = tbActive.Value.ToString();  // valeur correcte
  7. }


Et bien dans le code précédent, hidden_active = "" alors que tb_active = "bonjour" (par exemple)
 
Eti clair ?
Merci bien et désolé pour mes explications floues :)

Reply

Marsh Posté le 02-08-2006 à 17:40:05    

Vérifie que le ViewState est activé pour ton HiddenField (EnableViewState = true).
 
Si non, t'as trouvé la réponse. Il faut dans ce cas mettre la valeur à true:

Code :
  1. <asp:HiddenField ID="hiddenActive" Value=<%# Eval("field_name" ) %> runat="server" EnableViewState="true"/>


 
Si oui... là c'est plus chiant...
En passant il manque un " fermant dans ton code

Reply

Marsh Posté le 02-08-2006 à 21:52:16    

Oui, t'as trouvé !!!
Avec EnableViewState="true", ça marche !!!!!!!!
Mici bien :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed