2010-05-04 6 views
0

J'ai un contrôle personnalisé qui affiche un certain nombre de commandes literalcontrols dans la méthode createchildcontrols. comme ci-dessous (il y a d'autres lignes de literalcontrols étant ajouté que je ne l'ai pas uncluded ici)en utilisant findcontrol pour trouver un contrôle dans un contrôle littéral

this.Controls.Add(new LiteralControl(string.Format("<input type=\"text\" style=\"display:none\" value=\"{0}\" id=\"{1}\" name=\"{1}\" />", MediaId.ToString(), this.UniqueID))); 

je suis alors en train de valider cette zone de texte via l'ajout de la [ValidationProperty (« myprop »)] au sommet de la classe . fondamentalement j'ai besoin de valider contre la valeur entrée dans la zone de texte. la propriété myprop est comme suit

public string myprop 
    { 
     get 
     { 
      Control ctrl = this.FindControl(this.UniqueID); 
      string txt = ((TextBox)ctrl).Text; 

      try 
      { 
       MediaId = Convert.ToInt32(txt); 
      } 
      catch { MediaId = 0; } 
      return txt; 
     } 
    } 

malheureusement le FindControl ne trouve pas la zone de texte du tout, je suppose parce que pour .net concerne son un LiteralControl, et non une zone de texte du tout

maintenant sûr je pourrais changer les CreateChildControls pour ce faire

 TextBox tb = new TextBox(); 
     tb.Text = this.MediaId.ToString(); 
     tb.ID = this.UniqueID; 
     this.Controls.Add(tb); 

, mais à cause d'autres limites de ce que je fais, je dois changer beaucoup plus de choses dans d'autres endroits ..

est-il de toute façon d'obtenir findcontrol pour trouver la zone de texte rendue dans le littéral, ou une autre méthode?

grâce

nat

Répondre

0

malheureusement le FindControl ne trouve la zone de texte du tout, je présume parce que pour .net est concerné son un LiteralControl, pas une zone de texte en tous

C'est correct. Vous devez utiliser un autre contrôle comme une zone de texte.

+0

mais il n'y a aucun moyen de contrôler le clientid de cela mais est là? – nat

+0

En ce qui concerne le framework webform, le contenu du contrôle littéral est traité comme du texte et non comme un contrôle. –