Atteintre toutes les textBox d'un FormView

SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010 - 5 mai 2007 à 12:23
jamalmellal Messages postés 5 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 16 avril 2013 - 29 mars 2010 à 11:04
bonjour,
Je travaille sur VS2005 et asp.net 2.0 (vb)
je veux attribuer à chaque controle d'un formview un petit javascript "onfocus"
Mais ma sub, en asp.net 1.1 sans formview, commencait  par qqchose comme


Sub maSubFocus(ByVal Conteneur As Control)
  Dim conten As Control = Page.FindControl(Conteneur.ClientID)
  Dim Contr As Control
   For Each Contr In conten.Controls ...etc


où le conteneur était le formulaire (Form1) de ma page


Maintenant,  je n'arrive pas à lister toutes les textbox du formView (ici en mode insert).
Quand je mets :
for each Contr In MonFormView.Controls ... je n'obtient que la childTable
Pourtant, l'instruction
Dim maTextBox as textBox = MonFormView.FindControl("maTextBox ") est bien licite.
Que faire ?
merci de vos lumières
Gilles

4 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
5 mai 2007 à 17:32
la méthode FindControl est recursive, elle va chercher dans les enfants d'un controle et les enfants des enfants, etc...

dans ton cas c'est normal que tu as bien un Table car c'est le conteneur d'un formview il faut ensuite parcourir sa collection de controles et attrapper seulement ceux qui t'interesse.

Mais tu peux peut etre faire ce que tu veux en javascript, ce sera plus propre, plus rapide et plus propre (oui je begaye)

en gros

var fnc = function(tableID){

  var table = document.getElementById(tableID);
  var elements = table.getElementsByTableName('input');
  for (int i = 0; i < table.length; i++){
    if (elements[i].type == 'text'){
         elements[i].onmachin = textboxFormView_machin;
    }
  }

}

var textboxFormView_machin = function(){
   this.value; //obtient la value du textbox
}

il te reste plus qu'a faire appelle à la fonction fnc avec le clientID du tableau ...
<hr />Cyril - MSP - MCTS ASP.net & SQL
0
Anksunamon Messages postés 12 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 17 juin 2007
17 juin 2007 à 19:38
Bonjour,

J'ai le même problème, je cherche à modifier tous les labels de mon formview en mode edit au runtime, mais apparement je n'arrive pas à mettre mon code au bon endroit et/ou je ne trouve pas les controls...

Donc où dois-je placer ce code (Page_Load, monFormView_ItemCreated, monFormViewItemDatabound ?) et que dois-je modifier pour que ça marche?

if (monFormView.CurrentMode ==
FormViewMode.Edit)
{

   foreach (
Control ctrl
in monFormView.Controls)
   {

      if (ctrl
is
Label)
      {
         
Label lbl = (Label)ctrl;
         lbl.BackColor =
"#ff0000";

      }
   }
}

Merci d'avance !
0
ranouf Messages postés 237 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 31 août 2009
15 mai 2008 à 20:05
Apres parcours de l objet formview voila ce que g pu trouver :
        Dim cc As ControlCollection = FormView1.Controls.Item(0).Controls.Item(1).Controls.Item(0).Controls

        For Each ctrl As Control In cc
            If TypeName(ctrl) = "TextBox" Then
                Dim txt As TextBox = CType(ctrl, TextBox)
                If txt.TextMode = TextBoxMode.MultiLine Then
                    txt.Attributes.Add("onfocus", "javascript:toggleEditor('" + txt.ClientID + "');")
                    txt.Attributes.Add("onlostfocus", "javascript:toggleEditor('" + txt.ClientID + "');")
                End If
            End If
        Next

Les attributs sont bien ajoutes cependant cela n est pas pris en compte dans le rendu HTML, je ne comprens pas encore pkoi ....
0
jamalmellal Messages postés 5 Date d'inscription lundi 27 juillet 2009 Statut Membre Dernière intervention 16 avril 2013
29 mars 2010 à 11:04
j'ai la solution à ton problème:
il faut le mettre dans la partie PreRender de ton formview
0
Rejoignez-nous